@etherisc/gif-next 0.0.2-d0b1ffb-653 → 0.0.2-d0faf15-906

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