@etherisc/gif-next 0.0.2-acc7efa-771 → 0.0.2-ad346f1-601

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 (496) 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 +1056 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +771 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +824 -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 +577 -185
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +170 -69
  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 +376 -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 +131 -171
  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 +292 -308
  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 +191 -186
  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 +415 -290
  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 +312 -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 +1024 -328
  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 +1060 -472
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +334 -83
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +82 -51
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +673 -567
  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 +37 -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 +138 -81
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +114 -45
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +71 -134
  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 +282 -312
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +108 -91
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +183 -121
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +46 -115
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +355 -208
  131. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  132. package/artifacts/contracts/pool/Pool.sol/Pool.json +59 -146
  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 +600 -411
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +148 -67
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +308 -62
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +103 -42
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +182 -220
  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 +282 -180
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -82
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +249 -10
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +164 -21
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +148 -56
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +58 -3
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +163 -183
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +131 -7
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +277 -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 +130 -77
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.json +125 -119
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +92 -59
  173. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  174. package/artifacts/contracts/product/Product.sol/Product.json +176 -214
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.json +211 -72
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +103 -42
  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 +72 -13
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +37 -3
  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 +110 -51
  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 +75 -42
  196. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +79 -38
  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 +270 -522
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +100 -79
  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 +168 -347
  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 +37 -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 +37 -16
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  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 +251 -89
  263. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +144 -10
  265. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  266. package/artifacts/contracts/staking/Staking.sol/Staking.json +350 -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 +107 -60
  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 +213 -56
  277. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +96 -43
  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/IVersionable.sol/IVersionable.json +10 -0
  332. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  333. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +59 -24
  334. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  336. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  337. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  338. package/contracts/accounting/AccountingService.sol +274 -0
  339. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  340. package/contracts/accounting/IAccountingService.sol +47 -0
  341. package/contracts/authorization/AccessAdmin.sol +426 -242
  342. package/contracts/authorization/AccessAdminLib.sol +396 -0
  343. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  344. package/contracts/authorization/Authorization.sol +142 -262
  345. package/contracts/authorization/IAccess.sol +25 -7
  346. package/contracts/authorization/IAccessAdmin.sol +87 -80
  347. package/contracts/authorization/IAuthorization.sol +9 -42
  348. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  349. package/contracts/authorization/ServiceAuthorization.sol +247 -33
  350. package/contracts/distribution/BasicDistribution.sol +18 -16
  351. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  352. package/contracts/distribution/Distribution.sol +41 -79
  353. package/contracts/distribution/DistributionService.sol +192 -98
  354. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  355. package/contracts/distribution/IDistributionComponent.sol +3 -10
  356. package/contracts/distribution/IDistributionService.sol +38 -24
  357. package/contracts/examples/fire/FirePool.sol +10 -11
  358. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  359. package/contracts/examples/fire/FireProduct.sol +17 -12
  360. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  361. package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
  362. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  363. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  364. package/contracts/examples/unpermissioned/SimplePool.sol +26 -5
  365. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  366. package/contracts/examples/unpermissioned/SimpleProduct.sol +51 -11
  367. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  368. package/contracts/instance/BundleSet.sol +42 -38
  369. package/contracts/instance/IInstance.sol +97 -18
  370. package/contracts/instance/IInstanceService.sol +52 -11
  371. package/contracts/instance/Instance.sol +171 -57
  372. package/contracts/instance/InstanceAdmin.sol +271 -165
  373. package/contracts/instance/InstanceAuthorizationV3.sol +115 -43
  374. package/contracts/instance/InstanceReader.sol +449 -312
  375. package/contracts/instance/InstanceService.sol +269 -167
  376. package/contracts/instance/InstanceServiceManager.sol +1 -1
  377. package/contracts/instance/InstanceStore.sol +13 -2
  378. package/contracts/instance/RiskSet.sol +118 -0
  379. package/contracts/instance/base/BalanceStore.sol +3 -5
  380. package/contracts/instance/base/ObjectCounter.sol +1 -2
  381. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  382. package/contracts/instance/base/ObjectSet.sol +31 -33
  383. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  384. package/contracts/instance/module/IBundle.sol +6 -5
  385. package/contracts/instance/module/IComponents.sol +19 -8
  386. package/contracts/instance/module/IDistribution.sol +21 -8
  387. package/contracts/instance/module/IPolicy.sol +28 -7
  388. package/contracts/instance/module/IRisk.sol +5 -0
  389. package/contracts/oracle/BasicOracle.sol +1 -3
  390. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  391. package/contracts/oracle/IOracle.sol +9 -4
  392. package/contracts/oracle/Oracle.sol +1 -3
  393. package/contracts/oracle/OracleService.sol +96 -77
  394. package/contracts/oracle/OracleServiceManager.sol +1 -1
  395. package/contracts/pool/BasicPool.sol +19 -2
  396. package/contracts/pool/BasicPoolAuthorization.sol +33 -8
  397. package/contracts/pool/BundleService.sol +108 -163
  398. package/contracts/pool/BundleServiceManager.sol +1 -1
  399. package/contracts/pool/IBundleService.sol +24 -46
  400. package/contracts/pool/IPoolComponent.sol +1 -7
  401. package/contracts/pool/IPoolService.sol +65 -62
  402. package/contracts/pool/Pool.sol +99 -85
  403. package/contracts/pool/PoolLib.sol +359 -0
  404. package/contracts/pool/PoolService.sol +314 -225
  405. package/contracts/pool/PoolServiceManager.sol +1 -1
  406. package/contracts/product/ApplicationService.sol +100 -24
  407. package/contracts/product/ApplicationServiceManager.sol +1 -1
  408. package/contracts/product/BasicProduct.sol +2 -2
  409. package/contracts/product/BasicProductAuthorization.sol +32 -11
  410. package/contracts/product/ClaimService.sol +201 -151
  411. package/contracts/product/ClaimServiceManager.sol +1 -1
  412. package/contracts/product/IApplicationService.sol +28 -3
  413. package/contracts/product/IClaimService.sol +14 -2
  414. package/contracts/product/IPolicyService.sol +34 -12
  415. package/contracts/product/IPricingService.sol +1 -0
  416. package/contracts/product/IProductComponent.sol +4 -1
  417. package/contracts/product/IRiskService.sol +11 -7
  418. package/contracts/product/PolicyService.sol +256 -294
  419. package/contracts/product/PolicyServiceLib.sol +139 -0
  420. package/contracts/product/PolicyServiceManager.sol +1 -1
  421. package/contracts/product/PricingService.sol +55 -46
  422. package/contracts/product/PricingServiceManager.sol +3 -3
  423. package/contracts/product/Product.sol +68 -27
  424. package/contracts/product/RiskService.sol +98 -31
  425. package/contracts/product/RiskServiceManager.sol +1 -1
  426. package/contracts/registry/ChainNft.sol +4 -2
  427. package/contracts/registry/IRegistry.sol +20 -16
  428. package/contracts/registry/IRelease.sol +29 -0
  429. package/contracts/registry/Registry.sol +25 -6
  430. package/contracts/registry/RegistryAdmin.sol +101 -361
  431. package/contracts/registry/RegistryAuthorization.sol +284 -0
  432. package/contracts/registry/RegistryService.sol +4 -4
  433. package/contracts/registry/RegistryServiceManager.sol +1 -1
  434. package/contracts/registry/ReleaseAdmin.sol +195 -0
  435. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  436. package/contracts/registry/ReleaseRegistry.sol +154 -135
  437. package/contracts/registry/ServiceAuthorizationV3.sol +197 -46
  438. package/contracts/registry/TokenRegistry.sol +12 -13
  439. package/contracts/shared/Component.sol +52 -107
  440. package/contracts/shared/ComponentService.sol +354 -410
  441. package/contracts/shared/ComponentServiceManager.sol +1 -1
  442. package/contracts/shared/ContractLib.sol +276 -3
  443. package/contracts/shared/IComponent.sol +2 -18
  444. package/contracts/shared/IComponentService.sol +28 -37
  445. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  446. package/contracts/shared/IRegisterable.sol +15 -5
  447. package/contracts/shared/IService.sol +3 -5
  448. package/contracts/shared/InitializableERC165.sol +9 -1
  449. package/contracts/shared/InstanceLinkedComponent.sol +6 -25
  450. package/contracts/shared/NftOwnable.sol +11 -7
  451. package/contracts/shared/PolicyHolder.sol +4 -3
  452. package/contracts/shared/Registerable.sol +41 -20
  453. package/contracts/shared/RegistryLinked.sol +7 -13
  454. package/contracts/shared/Service.sol +13 -30
  455. package/contracts/shared/TokenHandler.sol +275 -72
  456. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  457. package/contracts/staking/IStaking.sol +46 -19
  458. package/contracts/staking/IStakingService.sol +21 -8
  459. package/contracts/staking/Staking.sol +190 -82
  460. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
  461. package/contracts/staking/StakingReader.sol +28 -19
  462. package/contracts/staking/StakingService.sol +91 -16
  463. package/contracts/staking/StakingServiceManager.sol +5 -4
  464. package/contracts/staking/StakingStore.sol +3 -2
  465. package/contracts/staking/TargetManagerLib.sol +1 -1
  466. package/contracts/type/Fee.sol +8 -8
  467. package/contracts/type/Key32.sol +2 -2
  468. package/contracts/type/Key32Set.sol +62 -0
  469. package/contracts/type/NftId.sol +6 -0
  470. package/contracts/type/ObjectType.sol +69 -38
  471. package/contracts/type/RiskId.sol +26 -8
  472. package/contracts/type/RoleId.sol +63 -45
  473. package/contracts/type/Seconds.sol +4 -0
  474. package/contracts/type/Selector.sol +5 -0
  475. package/contracts/type/String.sol +12 -0
  476. package/contracts/type/Timestamp.sol +0 -5
  477. package/contracts/type/UFixed.sol +34 -127
  478. package/contracts/type/Version.sol +54 -5
  479. package/contracts/upgradeability/IVersionable.sol +3 -0
  480. package/contracts/upgradeability/ProxyManager.sol +26 -12
  481. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
  482. package/contracts/upgradeability/Versionable.sol +6 -3
  483. package/package.json +4 -4
  484. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  485. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  486. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  487. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  488. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  489. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
  490. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  491. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  492. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  493. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  494. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  495. package/contracts/instance/module/IAccess.sol +0 -46
  496. package/contracts/shared/ComponentVerifyingService.sol +0 -126
@@ -0,0 +1,139 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {InstanceReader} from "../instance/InstanceReader.sol";
5
+ import {IPolicy} from "../instance/module/IPolicy.sol";
6
+ import {IPolicyService} from "../product/IPolicyService.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {StateId, CLOSED, COLLATERALIZED} from "../type/StateId.sol";
9
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
10
+
11
+ library PolicyServiceLib {
12
+
13
+ function policyIsActive(InstanceReader instanceReader, NftId policyNftId)
14
+ external
15
+ view
16
+ returns (bool isActive)
17
+ {
18
+ // policy not collateralized
19
+ if (instanceReader.getPolicyState(policyNftId) != COLLATERALIZED()) {
20
+ return false;
21
+ }
22
+
23
+ IPolicy.PolicyInfo memory info = instanceReader.getPolicyInfo(policyNftId);
24
+
25
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
26
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
27
+ if (info.activatedAt > TimestampLib.blockTimestamp()) { return false; } // not yet active
28
+ if (info.expiredAt <= TimestampLib.blockTimestamp()) { return false; } // already expired
29
+
30
+ return true;
31
+ }
32
+
33
+ function activate(
34
+ NftId policyNftId,
35
+ IPolicy.PolicyInfo memory policyInfo,
36
+ Timestamp activateAt
37
+ )
38
+ external
39
+ pure
40
+ returns (IPolicy.PolicyInfo memory)
41
+ {
42
+ // fail if policy has already been activated and activateAt is different
43
+ if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
44
+ revert IPolicyService.ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
45
+ }
46
+
47
+ // ignore if policy has already been activated and activateAt is the same
48
+ if (policyInfo.activatedAt == activateAt) {
49
+ return policyInfo;
50
+ }
51
+
52
+ policyInfo.activatedAt = activateAt;
53
+ policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
54
+
55
+ return policyInfo;
56
+ }
57
+
58
+ function expire(
59
+ InstanceReader instanceReader,
60
+ NftId policyNftId,
61
+ IPolicy.PolicyInfo memory policyInfo,
62
+ Timestamp expireAt
63
+ )
64
+ external
65
+ view
66
+ returns (IPolicy.PolicyInfo memory)
67
+ {
68
+ StateId policyState = instanceReader.getPolicyState(policyNftId);
69
+
70
+ checkExpiration(
71
+ expireAt,
72
+ policyNftId,
73
+ policyState,
74
+ policyInfo);
75
+
76
+ // effects
77
+ // update policyInfo with new expiredAt timestamp
78
+ if (expireAt.gtz()) {
79
+ policyInfo.expiredAt = expireAt;
80
+ } else {
81
+ policyInfo.expiredAt = TimestampLib.blockTimestamp();
82
+ }
83
+
84
+ return policyInfo;
85
+ }
86
+
87
+ function checkExpiration(
88
+ Timestamp newExpiredAt,
89
+ NftId policyNftId,
90
+ StateId policyState,
91
+ IPolicy.PolicyInfo memory policyInfo
92
+ )
93
+ public
94
+ view
95
+ {
96
+ if (policyState != COLLATERALIZED()) {
97
+ revert IPolicyService.ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
98
+ }
99
+ if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) {
100
+ revert IPolicyService.ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
101
+ }
102
+
103
+ // check expiredAt represents a valid expiry time
104
+ if (newExpiredAt >= policyInfo.expiredAt) {
105
+ revert IPolicyService.ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, newExpiredAt);
106
+ }
107
+
108
+ if (newExpiredAt.gtz() && newExpiredAt < TimestampLib.blockTimestamp()) {
109
+ revert IPolicyService.ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), newExpiredAt);
110
+ }
111
+ }
112
+
113
+ function policyIsCloseable(InstanceReader instanceReader, NftId policyNftId)
114
+ external
115
+ view
116
+ returns (bool isCloseable)
117
+ {
118
+ // policy already closed
119
+ if (instanceReader.getPolicyState(policyNftId) == CLOSED()) {
120
+ return false;
121
+ }
122
+
123
+ IPolicy.PolicyInfo memory info = instanceReader.getPolicyInfo(policyNftId);
124
+
125
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
126
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
127
+ if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
128
+
129
+ // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
130
+ if (info.claimAmount == info.sumInsuredAmount) { return true; }
131
+
132
+ // not closeable: not yet expired
133
+ if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
134
+
135
+ // all conditions to close the policy are met
136
+ return true;
137
+ }
138
+
139
+ }
@@ -17,7 +17,7 @@ contract PolicyServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  PolicyService svc = new PolicyService{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),
@@ -1,34 +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 {Seconds} from "../type/Seconds.sol";
6
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
7
- import {ObjectType} from "../type/ObjectType.sol";
8
- import {NftId} from "../type/NftId.sol";
9
- import {Fee} from "../type/Fee.sol";
10
- import {ReferralId} from "../type/Referral.sol";
11
- import {RiskId} from "../type/RiskId.sol";
12
- import {PRODUCT, DISTRIBUTION, PRICE} from "../type/ObjectType.sol";
13
- import {IRegistry} from "../registry/IRegistry.sol";
14
-
15
- import {IProductComponent} from "./IProductComponent.sol";
16
-
17
- import {IInstance} from "../instance/IInstance.sol";
18
- import {InstanceReader} from "../instance/InstanceReader.sol";
19
- import {IComponents} from "../instance/module/IComponents.sol";
20
- import {IPolicy} from "../instance/module/IPolicy.sol";
21
4
  import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IComponents} from "../instance/module/IComponents.sol";
22
6
  import {IDistribution} from "../instance/module/IDistribution.sol";
23
-
24
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
25
-
26
- import {IPricingService} from "./IPricingService.sol";
27
7
  import {IDistributionService} from "../distribution/IDistributionService.sol";
8
+ import {IInstance} from "../instance/IInstance.sol";
9
+ import {IPolicy} from "../instance/module/IPolicy.sol";
10
+ import {IPricingService} from "./IPricingService.sol";
11
+ import {IProductComponent} from "./IProductComponent.sol";
12
+ import {IRegistry} from "../registry/IRegistry.sol";
13
+
14
+ import {Amount} from "../type/Amount.sol";
15
+ import {BUNDLE, DISTRIBUTION, PRICE, PRODUCT} from "../type/ObjectType.sol";
16
+ import {ContractLib} from "../shared/ContractLib.sol";
17
+ import {Fee} from "../type/Fee.sol";
18
+ import {InstanceReader} from "../instance/InstanceReader.sol";
19
+ import {NftId} from "../type/NftId.sol";
20
+ import {ObjectType} from "../type/ObjectType.sol";
21
+ import {ReferralId} from "../type/Referral.sol";
22
+ import {RiskId} from "../type/RiskId.sol";
23
+ import {Seconds} from "../type/Seconds.sol";
24
+ import {Service} from "../shared/Service.sol";
28
25
 
29
26
 
30
27
  contract PricingService is
31
- ComponentVerifyingService,
28
+ Service,
32
29
  IPricingService
33
30
  {
34
31
  IDistributionService internal _distributionService;
@@ -42,14 +39,15 @@ contract PricingService is
42
39
  initializer()
43
40
  {
44
41
  (
45
- address registryAddress,
46
- address authority
42
+ address authority,
43
+ address registry
47
44
  ) = abi.decode(data, (address, address));
48
45
 
49
- _initializeService(registryAddress, authority, owner);
50
- _registerInterface(type(IPricingService).interfaceId);
46
+ __Service_init(authority, registry, owner);
51
47
 
52
48
  _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
49
+
50
+ _registerInterface(type(IPricingService).interfaceId);
53
51
  }
54
52
 
55
53
  /// @dev calculates the premium amount for the specified attributes
@@ -70,6 +68,9 @@ contract PricingService is
70
68
  IPolicy.PremiumInfo memory premium
71
69
  )
72
70
  {
71
+ _checkNftType(productNftId, PRODUCT());
72
+ _checkNftType(bundleNftId, BUNDLE());
73
+
73
74
  InstanceReader reader;
74
75
  Amount netPremiumAmount;
75
76
 
@@ -77,11 +78,16 @@ contract PricingService is
77
78
  // verify product
78
79
  (
79
80
  IRegistry.ObjectInfo memory registryInfo,
80
- IInstance instance
81
- ) = _getAndVerifyComponentInfo(productNftId, PRODUCT(), false);
81
+ address instanceAddress
82
+ ) = ContractLib.getInfoAndInstance(getRegistry(), productNftId, false);
82
83
 
83
84
  // get instance reader from local instance variable
84
- reader = instance.getInstanceReader();
85
+ reader = IInstance(instanceAddress).getInstanceReader();
86
+
87
+ NftId riskProductNftId = reader.getRiskInfo(riskId).productNftId;
88
+ if (productNftId != riskProductNftId) {
89
+ revert ErrorPricingServiceRiskProductMismatch(riskId, riskProductNftId, productNftId);
90
+ }
85
91
 
86
92
  // calculate net premium
87
93
  netPremiumAmount = IProductComponent(registryInfo.objectAddress).calculateNetPremium(
@@ -95,6 +101,7 @@ contract PricingService is
95
101
  {
96
102
  // get configurations for all involed objects
97
103
  IComponents.ProductInfo memory productInfo = reader.getProductInfo(productNftId);
104
+ IComponents.FeeInfo memory feeInfo = reader.getFeeInfo(productNftId);
98
105
 
99
106
  IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
100
107
  if(bundleInfo.poolNftId != productInfo.poolNftId) {
@@ -104,21 +111,22 @@ contract PricingService is
104
111
  // calculate fixed fees for product, pool, bundle
105
112
  premium = _getFixedFeeAmounts(
106
113
  netPremiumAmount,
107
- productInfo,
114
+ feeInfo,
108
115
  bundleInfo
109
116
  );
110
117
 
111
118
  // calculate variable fees for product, pool, bundle
112
119
  premium = _calculateVariableFeeAmounts(
113
120
  premium,
114
- productInfo,
121
+ feeInfo,
115
122
  bundleInfo
116
123
  );
117
124
 
118
125
  // calculate distribution fee and (if applicable) commission
119
126
  premium = _calculateDistributionOwnerFeeAmount(
120
127
  premium,
121
- productInfo,
128
+ feeInfo,
129
+ productInfo.distributionNftId,
122
130
  referralId,
123
131
  reader
124
132
  );
@@ -134,7 +142,7 @@ contract PricingService is
134
142
  revert ErrorPricingServiceTargetWalletAmountsMismatch();
135
143
  }
136
144
 
137
- if (premium.distributionOwnerFeeFixAmount.toInt() < productInfo.minDistributionOwnerFee.fixedFee) {
145
+ if (premium.distributionOwnerFeeFixAmount < feeInfo.minDistributionOwnerFee.fixedFee) {
138
146
  revert ErrorPricingServiceFeeCalculationMismatch(
139
147
  premium.distributionFeeFixAmount,
140
148
  premium.distributionFeeVarAmount,
@@ -161,7 +169,7 @@ contract PricingService is
161
169
  // internal functions
162
170
  function _getFixedFeeAmounts(
163
171
  Amount netPremiumAmount,
164
- IComponents.ProductInfo memory productInfo,
172
+ IComponents.FeeInfo memory feeInfo,
165
173
  IBundle.BundleInfo memory bundleInfo
166
174
  )
167
175
  internal
@@ -174,26 +182,26 @@ contract PricingService is
174
182
  premium.netPremiumAmount = netPremiumAmount;
175
183
  premium.fullPremiumAmount = netPremiumAmount;
176
184
 
177
- Amount t = AmountLib.toAmount(productInfo.productFee.fixedFee);
185
+ Amount t = feeInfo.productFee.fixedFee;
178
186
  premium.productFeeFixAmount = t;
179
187
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
180
188
 
181
- t = AmountLib.toAmount(productInfo.poolFee.fixedFee);
189
+ t = feeInfo.poolFee.fixedFee;
182
190
  premium.poolFeeFixAmount = t;
183
191
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
184
192
 
185
- t = AmountLib.toAmount(bundleInfo.fee.fixedFee);
193
+ t = bundleInfo.fee.fixedFee;
186
194
  premium.bundleFeeFixAmount = t;
187
195
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
188
196
 
189
- t = AmountLib.toAmount(productInfo.distributionFee.fixedFee);
197
+ t = feeInfo.distributionFee.fixedFee;
190
198
  premium.distributionFeeFixAmount = t;
191
199
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
192
200
  }
193
201
 
194
202
  function _calculateVariableFeeAmounts(
195
203
  IPolicy.PremiumInfo memory premium,
196
- IComponents.ProductInfo memory productInfo,
204
+ IComponents.FeeInfo memory feeInfo,
197
205
  IBundle.BundleInfo memory bundleInfo
198
206
  )
199
207
  internal
@@ -204,11 +212,11 @@ contract PricingService is
204
212
  {
205
213
  Amount netPremiumAmount = premium.netPremiumAmount;
206
214
 
207
- Amount t = netPremiumAmount.multiplyWith(productInfo.productFee.fractionalFee);
215
+ Amount t = netPremiumAmount.multiplyWith(feeInfo.productFee.fractionalFee);
208
216
  premium.productFeeVarAmount = t;
209
217
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
210
218
 
211
- t = netPremiumAmount.multiplyWith(productInfo.poolFee.fractionalFee);
219
+ t = netPremiumAmount.multiplyWith(feeInfo.poolFee.fractionalFee);
212
220
  premium.poolFeeVarAmount = t;
213
221
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
214
222
 
@@ -216,7 +224,7 @@ contract PricingService is
216
224
  premium.bundleFeeVarAmount = t;
217
225
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
218
226
 
219
- t = netPremiumAmount.multiplyWith(productInfo.distributionFee.fractionalFee);
227
+ t = netPremiumAmount.multiplyWith(feeInfo.distributionFee.fractionalFee);
220
228
  premium.distributionFeeVarAmount = t;
221
229
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
222
230
 
@@ -225,7 +233,8 @@ contract PricingService is
225
233
 
226
234
  function _calculateDistributionOwnerFeeAmount(
227
235
  IPolicy.PremiumInfo memory premium,
228
- IComponents.ProductInfo memory productInfo,
236
+ IComponents.FeeInfo memory feeInfo,
237
+ NftId distributionNftId,
229
238
  // ISetup.DistributionSetupInfo memory distInfo,
230
239
  ReferralId referralId,
231
240
  InstanceReader reader
@@ -236,14 +245,14 @@ contract PricingService is
236
245
  {
237
246
 
238
247
  // if the referral is not valid, then the distribution owner gets everything
239
- if (productInfo.distributionNftId.eqz() || ! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
248
+ if (distributionNftId.eqz() || ! _distributionService.referralIsValid(distributionNftId, referralId)) {
240
249
  premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
241
250
  premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
242
251
  premium.premiumAmount = premium.fullPremiumAmount;
243
252
  return premium;
244
253
  }
245
254
 
246
- Fee memory minDistributionOwnerFee = productInfo.minDistributionOwnerFee;
255
+ Fee memory minDistributionOwnerFee = feeInfo.minDistributionOwnerFee;
247
256
 
248
257
  // if the referral is valid, the the commission and discount are calculated based in the full premium
249
258
  // the remaing amount goes to the distribution owner
@@ -255,7 +264,7 @@ contract PricingService is
255
264
  Amount commissionAmount = premium.netPremiumAmount.multiplyWith(distributorTypeInfo.commissionPercentage);
256
265
  premium.commissionAmount = commissionAmount;
257
266
  premium.discountAmount = premium.fullPremiumAmount.multiplyWith(referralInfo.discountPercentage);
258
- premium.distributionOwnerFeeFixAmount = AmountLib.toAmount(minDistributionOwnerFee.fixedFee);
267
+ premium.distributionOwnerFeeFixAmount = minDistributionOwnerFee.fixedFee;
259
268
  premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount - commissionAmount - premium.discountAmount;
260
269
  premium.premiumAmount = premium.fullPremiumAmount - premium.discountAmount;
261
270
  }
@@ -12,14 +12,14 @@ contract PricingServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with pricing service implementation and deploys instance
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
18
  {
19
19
  PricingService pricingSrv = new PricingService{salt: salt}();
20
- bytes memory data = abi.encode(registryAddress, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
- registryAddress,
22
+ registry,
23
23
  address(pricingSrv),
24
24
  data,
25
25
  salt);
@@ -3,34 +3,28 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount, AmountLib} from "../type/Amount.sol";
5
5
  import {ClaimId} from "../type/ClaimId.sol";
6
- import {IComponent} from "../shared/IComponent.sol";
7
- import {Fee, FeeLib} from "../type/Fee.sol";
8
- import {IRisk} from "../instance/module/IRisk.sol";
6
+ import {Fee} from "../type/Fee.sol";
9
7
  import {IApplicationService} from "./IApplicationService.sol";
10
8
  import {IAuthorization} from "../authorization/IAuthorization.sol";
11
9
  import {IComponentService} from "../shared/IComponentService.sol";
12
10
  import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
13
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
14
11
  import {IPolicyService} from "./IPolicyService.sol";
15
12
  import {IRiskService} from "./IRiskService.sol";
16
13
  import {IClaimService} from "./IClaimService.sol";
17
14
  import {IPricingService} from "./IPricingService.sol";
18
15
  import {IProductComponent} from "./IProductComponent.sol";
19
- import {NftId, NftIdLib} from "../type/NftId.sol";
20
- import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, BUNDLE, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
16
+ import {NftId} from "../type/NftId.sol";
17
+ import {COMPONENT, PRODUCT, BUNDLE, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
21
18
  import {PayoutId} from "../type/PayoutId.sol";
22
- import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE } from "../type/ObjectType.sol";
19
+ import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE, RISK } from "../type/ObjectType.sol";
23
20
  import {ReferralId} from "../type/Referral.sol";
24
- import {RiskId, RiskIdLib} from "../type/RiskId.sol";
21
+ import {RiskId} from "../type/RiskId.sol";
25
22
  import {Seconds} from "../type/Seconds.sol";
26
23
  import {StateId} from "../type/StateId.sol";
27
24
  import {Timestamp} from "../type/Timestamp.sol";
28
25
 
29
26
  import {IPolicy} from "../instance/module/IPolicy.sol";
30
27
  import {IComponents} from "../instance/module/IComponents.sol";
31
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
32
- import {IOracleComponent} from "../oracle/IOracleComponent.sol";
33
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
34
28
 
35
29
  abstract contract Product is
36
30
  InstanceLinkedComponent,
@@ -41,6 +35,7 @@ abstract contract Product is
41
35
 
42
36
  struct ProductStorage {
43
37
  IComponents.ProductInfo _productInfo;
38
+ IComponents.FeeInfo _feeInfo;
44
39
  IComponentService _componentService;
45
40
  IRiskService _riskService;
46
41
  IApplicationService _applicationService;
@@ -53,6 +48,7 @@ abstract contract Product is
53
48
  function registerComponent(address component)
54
49
  external
55
50
  virtual
51
+ restricted()
56
52
  onlyOwner()
57
53
  returns (NftId componentNftId)
58
54
  {
@@ -84,6 +80,7 @@ abstract contract Product is
84
80
  )
85
81
  public
86
82
  view
83
+ virtual
87
84
  override
88
85
  onlyNftOfType(bundleNftId, BUNDLE())
89
86
  returns (Amount premiumAmount)
@@ -126,13 +123,22 @@ abstract contract Product is
126
123
  return _getProductStorage()._productInfo;
127
124
  }
128
125
 
126
+ function getInitialFeeInfo()
127
+ public
128
+ virtual
129
+ view
130
+ returns (IComponents.FeeInfo memory feeInfo)
131
+ {
132
+ return _getProductStorage()._feeInfo;
133
+ }
134
+
129
135
 
130
136
  function _initializeProduct(
131
137
  address registry,
132
138
  NftId instanceNftId,
133
139
  string memory name,
134
- address token,
135
140
  IComponents.ProductInfo memory productInfo,
141
+ IComponents.FeeInfo memory feeInfo,
136
142
  IAuthorization authorization,
137
143
  address initialOwner,
138
144
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
@@ -145,7 +151,6 @@ abstract contract Product is
145
151
  registry,
146
152
  instanceNftId,
147
153
  name,
148
- token,
149
154
  PRODUCT(),
150
155
  authorization,
151
156
  productInfo.isInterceptingPolicyTransfers,
@@ -154,7 +159,8 @@ abstract contract Product is
154
159
 
155
160
  ProductStorage storage $ = _getProductStorage();
156
161
  $._productInfo = productInfo;
157
- $._riskService = IRiskService(_getServiceAddress(PRODUCT()));
162
+ $._feeInfo = feeInfo;
163
+ $._riskService = IRiskService(_getServiceAddress(RISK()));
158
164
  $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
159
165
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
160
166
  $._claimService = IClaimService(_getServiceAddress(CLAIM()));
@@ -177,13 +183,14 @@ abstract contract Product is
177
183
 
178
184
 
179
185
  function _createRisk(
180
- RiskId id,
186
+ bytes32 id,
181
187
  bytes memory data
182
188
  )
183
189
  internal
184
190
  virtual
191
+ returns (RiskId riskId)
185
192
  {
186
- _getProductStorage()._riskService.createRisk(
193
+ return _getProductStorage()._riskService.createRisk(
187
194
  id,
188
195
  data
189
196
  );
@@ -216,11 +223,6 @@ abstract contract Product is
216
223
  }
217
224
 
218
225
 
219
- function _getRiskInfo(RiskId id) internal virtual view returns (IRisk.RiskInfo memory info) {
220
- return getInstance().getInstanceReader().getRiskInfo(id);
221
- }
222
-
223
-
224
226
  function _createApplication(
225
227
  address applicationOwner,
226
228
  RiskId riskId,
@@ -249,14 +251,17 @@ abstract contract Product is
249
251
 
250
252
  function _createPolicy(
251
253
  NftId applicationNftId,
252
- Timestamp activateAt
254
+ Timestamp activateAt,
255
+ Amount maxPremiumAmount
253
256
  )
254
257
  internal
255
258
  virtual
259
+ returns (Amount premiumAmount)
256
260
  {
257
- _getProductStorage()._policyService.createPolicy(
261
+ premiumAmount = _getProductStorage()._policyService.createPolicy(
258
262
  applicationNftId,
259
- activateAt);
263
+ activateAt,
264
+ maxPremiumAmount);
260
265
  }
261
266
 
262
267
  function _decline(
@@ -280,6 +285,21 @@ abstract contract Product is
280
285
  expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
281
286
  }
282
287
 
288
+ /// @dev adjust the activation date of the policy.
289
+ /// The policy must already have an activation date set.
290
+ /// Allowed values are from the current blocktime to the expiration date of the policy.
291
+ function _adjustActivation(
292
+ NftId policyNftId,
293
+ Timestamp activateAt
294
+ )
295
+ internal
296
+ virtual
297
+ {
298
+ _getProductStorage()._policyService.adjustActivation(
299
+ policyNftId,
300
+ activateAt);
301
+ }
302
+
283
303
  function _collectPremium(
284
304
  NftId policyNftId,
285
305
  Timestamp activateAt
@@ -329,6 +349,18 @@ abstract contract Product is
329
349
  claimData);
330
350
  }
331
351
 
352
+ function _revokeClaim(
353
+ NftId policyNftId,
354
+ ClaimId claimId
355
+ )
356
+ internal
357
+ virtual
358
+ {
359
+ _getProductStorage()._claimService.revoke(
360
+ policyNftId,
361
+ claimId);
362
+ }
363
+
332
364
  function _confirmClaim(
333
365
  NftId policyNftId,
334
366
  ClaimId claimId,
@@ -413,14 +445,23 @@ abstract contract Product is
413
445
  )
414
446
  internal
415
447
  virtual
448
+ returns (Amount netPayoutAmount, Amount processingFeeAmount)
416
449
  {
417
- _getProductStorage()._claimService.processPayout(
450
+ (netPayoutAmount, processingFeeAmount) = _getProductStorage()._claimService.processPayout(
418
451
  policyNftId,
419
452
  payoutId);
420
453
  }
421
454
 
422
- function _toRiskId(string memory riskName) internal virtual pure returns (RiskId riskId) {
423
- return RiskIdLib.toRiskId(riskName);
455
+ function _cancelPayout(
456
+ NftId policyNftId,
457
+ PayoutId payoutId
458
+ )
459
+ internal
460
+ virtual
461
+ {
462
+ _getProductStorage()._claimService.cancelPayout(
463
+ policyNftId,
464
+ payoutId);
424
465
  }
425
466
 
426
467
  function _getProductStorage() internal virtual pure returns (ProductStorage storage $) {