@etherisc/gif-next 0.0.2-f398177-971 → 0.0.2-f47f21f-178

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 (676) hide show
  1. package/README.md +51 -5
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1402 -0
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1048 -0
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1439 -0
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +830 -0
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  31. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +221 -292
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +216 -95
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2077 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -97
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +171 -85
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +126 -226
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1653 -0
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +874 -385
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +247 -231
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +151 -85
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1288 -398
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  84. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  90. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  91. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  92. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  93. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  94. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1039 -0
  95. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  96. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  97. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  98. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  99. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  100. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +788 -0
  101. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  102. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → oracle/IOracleService.sol/IOracleService.json} +262 -204
  103. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  104. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → oracle/Oracle.sol/Oracle.json} +318 -272
  105. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  106. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +966 -0
  107. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +722 -0
  109. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  110. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +305 -413
  111. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  112. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
  113. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  114. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1465 -0
  115. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  116. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +834 -0
  117. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  118. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +257 -32
  119. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  120. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +960 -0
  121. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  122. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +463 -257
  123. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  124. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → pool/Pool.sol/Pool.json} +379 -376
  125. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  126. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1625 -0
  127. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  128. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +766 -0
  129. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  130. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +771 -0
  131. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  132. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +710 -0
  133. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  134. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +387 -412
  135. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  136. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  137. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  138. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1431 -0
  139. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  140. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +838 -0
  141. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  142. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +55 -2
  143. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  144. package/artifacts/contracts/{instance/service → product}/IClaimService.sol/IClaimService.json +207 -8
  145. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  146. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +925 -0
  147. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  148. package/artifacts/contracts/{instance/service → product}/IPricingService.sol/IPricingService.json +155 -87
  149. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1012 -0
  151. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  152. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +44 -57
  153. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1302 -0
  155. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  156. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +782 -0
  157. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  158. package/artifacts/contracts/product/PricingService.sol/PricingService.json +907 -0
  159. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +762 -0
  161. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  162. package/artifacts/contracts/product/Product.sol/Product.json +1131 -0
  163. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  164. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  165. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  166. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  167. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  169. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +435 -29
  171. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +270 -109
  173. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  175. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/Registry.sol/Registry.json +865 -68
  177. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  178. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1886 -0
  179. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  180. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +334 -238
  181. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +138 -82
  183. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  184. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  185. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  186. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  187. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  188. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  189. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -140
  191. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  192. package/artifacts/contracts/shared/Component.sol/Component.json +725 -0
  193. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  194. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1768 -0
  195. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  196. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +814 -0
  197. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  198. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +59 -216
  199. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  200. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  201. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  202. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +111 -115
  203. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1335 -0
  205. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  206. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +723 -0
  207. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  208. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  209. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  210. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  211. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
  213. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  215. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +36 -1
  217. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  219. package/artifacts/contracts/shared/IService.sol/IService.json +49 -1
  220. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  221. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  222. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  223. package/artifacts/contracts/{components/Component.sol/Component.json → shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json} +213 -257
  224. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  225. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  226. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  227. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  228. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  229. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  230. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  231. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +28 -57
  232. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  233. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  234. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +70 -87
  236. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  238. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  239. package/artifacts/contracts/shared/Service.sol/Service.json +55 -101
  240. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  241. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +364 -9
  242. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  243. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  244. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  245. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → staking/IStaking.sol/IStaking.json} +688 -599
  246. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  247. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  248. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  250. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  251. package/artifacts/contracts/staking/Staking.sol/Staking.json +1888 -0
  252. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  254. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +776 -0
  256. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  258. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1249 -0
  260. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +710 -0
  262. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  264. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  265. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  266. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  267. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  268. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  270. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  272. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  274. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  276. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  278. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  280. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  282. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  283. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  284. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  286. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  288. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  290. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  292. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  294. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  296. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  298. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  300. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  302. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  304. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  306. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  307. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -7
  308. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  310. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  312. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  314. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  316. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  317. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  318. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  319. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  320. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  321. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  322. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  323. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  324. package/contracts/authorization/AccessAdmin.sol +596 -0
  325. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  326. package/contracts/authorization/Authorization.sol +289 -0
  327. package/contracts/authorization/IAccess.sol +49 -0
  328. package/contracts/authorization/IAccessAdmin.sol +137 -0
  329. package/contracts/authorization/IAuthorization.sol +60 -0
  330. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  331. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  332. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  333. package/contracts/distribution/BasicDistribution.sol +139 -0
  334. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  335. package/contracts/{components → distribution}/Distribution.sol +160 -160
  336. package/contracts/distribution/DistributionService.sol +355 -0
  337. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  338. package/contracts/distribution/IDistributionComponent.sol +52 -0
  339. package/contracts/{instance/service → distribution}/IDistributionService.sol +32 -18
  340. package/contracts/examples/fire/DamageLevel.sol +59 -0
  341. package/contracts/examples/fire/FirePool.sol +75 -0
  342. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  343. package/contracts/examples/fire/FireProduct.sol +418 -0
  344. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  345. package/contracts/examples/fire/FireUSD.sol +26 -0
  346. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  347. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  348. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  349. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  350. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +27 -27
  351. package/contracts/instance/IInstance.sol +33 -44
  352. package/contracts/instance/IInstanceService.sol +34 -35
  353. package/contracts/instance/Instance.sol +129 -126
  354. package/contracts/instance/InstanceAdmin.sol +277 -0
  355. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  356. package/contracts/instance/InstanceReader.sol +202 -75
  357. package/contracts/instance/InstanceService.sol +250 -147
  358. package/contracts/instance/InstanceServiceManager.sol +14 -29
  359. package/contracts/instance/InstanceStore.sol +148 -73
  360. package/contracts/instance/base/BalanceStore.sol +123 -0
  361. package/contracts/instance/base/Cloneable.sol +28 -0
  362. package/contracts/instance/base/ObjectCounter.sol +21 -0
  363. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  364. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  365. package/contracts/instance/module/IAccess.sol +4 -12
  366. package/contracts/instance/module/IBundle.sol +6 -9
  367. package/contracts/instance/module/IComponents.sol +26 -16
  368. package/contracts/instance/module/IDistribution.sol +5 -6
  369. package/contracts/instance/module/IPolicy.sol +40 -33
  370. package/contracts/instance/module/IRisk.sol +1 -1
  371. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  372. package/contracts/oracle/BasicOracle.sol +47 -0
  373. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  374. package/contracts/oracle/IOracle.sol +36 -0
  375. package/contracts/oracle/IOracleComponent.sol +33 -0
  376. package/contracts/oracle/IOracleService.sol +66 -0
  377. package/contracts/oracle/Oracle.sol +156 -0
  378. package/contracts/oracle/OracleService.sol +291 -0
  379. package/contracts/oracle/OracleServiceManager.sol +39 -0
  380. package/contracts/pool/BasicPool.sol +154 -0
  381. package/contracts/pool/BasicPoolAuthorization.sol +57 -0
  382. package/contracts/pool/BundleService.sol +493 -0
  383. package/contracts/pool/BundleServiceManager.sol +39 -0
  384. package/contracts/{instance/service → pool}/IBundleService.sol +54 -29
  385. package/contracts/pool/IPoolComponent.sol +68 -0
  386. package/contracts/pool/IPoolService.sol +167 -0
  387. package/contracts/pool/Pool.sol +335 -0
  388. package/contracts/pool/PoolService.sol +544 -0
  389. package/contracts/pool/PoolServiceManager.sol +39 -0
  390. package/contracts/product/ApplicationService.sol +259 -0
  391. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  392. package/contracts/product/BasicProduct.sol +53 -0
  393. package/contracts/product/BasicProductAuthorization.sol +42 -0
  394. package/contracts/product/ClaimService.sol +612 -0
  395. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  396. package/contracts/{instance/service → product}/IApplicationService.sol +10 -9
  397. package/contracts/{instance/service → product}/IClaimService.sol +51 -18
  398. package/contracts/product/IPolicyService.sol +80 -0
  399. package/contracts/product/IPricingService.sol +39 -0
  400. package/contracts/product/IProductComponent.sol +59 -0
  401. package/contracts/product/IRiskService.sol +33 -0
  402. package/contracts/product/PolicyService.sol +697 -0
  403. package/contracts/product/PolicyServiceManager.sol +39 -0
  404. package/contracts/product/PricingService.sol +300 -0
  405. package/contracts/product/PricingServiceManager.sol +39 -0
  406. package/contracts/product/Product.sol +455 -0
  407. package/contracts/product/RiskService.sol +96 -0
  408. package/contracts/product/RiskServiceManager.sol +39 -0
  409. package/contracts/registry/ChainNft.sol +75 -38
  410. package/contracts/registry/IRegistry.sol +96 -26
  411. package/contracts/registry/IRegistryService.sol +34 -38
  412. package/contracts/registry/ITransferInterceptor.sol +1 -2
  413. package/contracts/registry/Registry.sol +445 -195
  414. package/contracts/registry/RegistryAdmin.sol +448 -0
  415. package/contracts/registry/RegistryService.sol +87 -132
  416. package/contracts/registry/RegistryServiceManager.sol +23 -32
  417. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  418. package/contracts/registry/ReleaseRegistry.sol +501 -0
  419. package/contracts/registry/ServiceAuthorizationV3.sol +194 -0
  420. package/contracts/registry/TokenRegistry.sol +261 -62
  421. package/contracts/shared/Component.sol +265 -0
  422. package/contracts/shared/ComponentService.sol +735 -0
  423. package/contracts/shared/ComponentServiceManager.sol +38 -0
  424. package/contracts/shared/ComponentVerifyingService.sol +126 -0
  425. package/contracts/shared/ContractLib.sol +38 -0
  426. package/contracts/{components → shared}/IComponent.sol +25 -41
  427. package/contracts/shared/IComponentService.sol +120 -0
  428. package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
  429. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  430. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  431. package/contracts/shared/INftOwnable.sol +4 -2
  432. package/contracts/shared/IPolicyHolder.sol +16 -21
  433. package/contracts/shared/IRegisterable.sol +11 -0
  434. package/contracts/shared/IService.sol +10 -3
  435. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  436. package/contracts/shared/InstanceLinkedComponent.sol +213 -0
  437. package/contracts/shared/KeyValueStore.sol +131 -0
  438. package/contracts/shared/Lifecycle.sol +88 -0
  439. package/contracts/shared/NftIdSet.sol +65 -0
  440. package/contracts/shared/NftOwnable.sol +32 -23
  441. package/contracts/shared/PolicyHolder.sol +20 -52
  442. package/contracts/shared/Registerable.sol +22 -12
  443. package/contracts/shared/RegistryLinked.sol +3 -2
  444. package/contracts/shared/Service.sol +48 -36
  445. package/contracts/shared/TokenHandler.sol +113 -9
  446. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  447. package/contracts/staking/IStaking.sol +168 -0
  448. package/contracts/staking/IStakingService.sol +157 -0
  449. package/contracts/staking/StakeManagerLib.sol +224 -0
  450. package/contracts/staking/Staking.sol +497 -0
  451. package/contracts/staking/StakingLifecycle.sol +23 -0
  452. package/contracts/staking/StakingManager.sol +52 -0
  453. package/contracts/staking/StakingReader.sol +190 -0
  454. package/contracts/staking/StakingService.sol +393 -0
  455. package/contracts/staking/StakingServiceManager.sol +44 -0
  456. package/contracts/staking/StakingStore.sol +605 -0
  457. package/contracts/staking/TargetManagerLib.sol +211 -0
  458. package/contracts/{types → type}/AddressSet.sol +1 -1
  459. package/contracts/{types → type}/Amount.sol +44 -3
  460. package/contracts/{types → type}/Blocknumber.sol +26 -3
  461. package/contracts/{types → type}/ClaimId.sol +6 -1
  462. package/contracts/{types → type}/Fee.sol +17 -16
  463. package/contracts/{types → type}/NftId.sol +15 -16
  464. package/contracts/{types → type}/NftIdSet.sol +2 -2
  465. package/contracts/type/ObjectType.sol +276 -0
  466. package/contracts/{types → type}/PayoutId.sol +10 -10
  467. package/contracts/{types → type}/Referral.sol +2 -1
  468. package/contracts/type/RequestId.sol +75 -0
  469. package/contracts/{types → type}/RiskId.sol +16 -2
  470. package/contracts/type/RoleId.sol +162 -0
  471. package/contracts/type/Seconds.sol +101 -0
  472. package/contracts/type/Selector.sol +102 -0
  473. package/contracts/{types → type}/StateId.sol +41 -2
  474. package/contracts/type/String.sol +53 -0
  475. package/contracts/{types → type}/Timestamp.sol +17 -3
  476. package/contracts/{types → type}/UFixed.sol +38 -9
  477. package/contracts/{types → type}/Version.sol +4 -2
  478. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  479. package/contracts/{shared → upgradeability}/ProxyManager.sol +93 -30
  480. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  481. package/contracts/{shared → upgradeability}/Versionable.sol +3 -3
  482. package/package.json +9 -5
  483. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  484. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  485. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  486. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  487. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  488. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  489. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  490. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  491. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  492. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  493. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  494. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  495. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  496. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  497. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  498. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  499. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  500. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  501. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  502. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  503. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  504. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  505. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  506. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  507. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  508. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  509. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  510. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  511. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -918
  512. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -648
  514. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  515. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1288
  516. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  517. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -696
  518. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  519. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -1384
  520. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -752
  522. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  523. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1556
  524. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  525. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -780
  526. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  528. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1281
  536. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -740
  538. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1622
  540. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -708
  542. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +0 -1004
  544. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +0 -688
  546. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -864
  548. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  550. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  551. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  552. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  553. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  554. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  555. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  556. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  558. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  559. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  560. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  561. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  562. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  563. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  564. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  565. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  566. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  568. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -370
  570. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  572. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  573. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -588
  574. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  575. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  576. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  577. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  578. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  579. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  580. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  581. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  582. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  583. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  584. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -281
  586. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  588. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  590. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  591. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -179
  592. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  594. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  595. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -312
  596. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  597. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  598. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  600. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  601. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  602. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  604. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  606. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -209
  608. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  610. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  612. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  614. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  616. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  618. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  621. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  623. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  624. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  625. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  627. package/contracts/components/Component.sol +0 -272
  628. package/contracts/components/IDistributionComponent.sol +0 -71
  629. package/contracts/components/IPoolComponent.sol +0 -114
  630. package/contracts/components/IProductComponent.sol +0 -41
  631. package/contracts/components/Pool.sol +0 -302
  632. package/contracts/components/Product.sol +0 -375
  633. package/contracts/instance/Cloneable.sol +0 -51
  634. package/contracts/instance/InstanceAccessManager.sol +0 -541
  635. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  636. package/contracts/instance/base/ComponentService.sol +0 -148
  637. package/contracts/instance/base/KeyValueStore.sol +0 -149
  638. package/contracts/instance/base/Lifecycle.sol +0 -120
  639. package/contracts/instance/module/ISetup.sol +0 -33
  640. package/contracts/instance/module/ITreasury.sol +0 -23
  641. package/contracts/instance/service/ApplicationService.sol +0 -186
  642. package/contracts/instance/service/BundleService.sol +0 -382
  643. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  644. package/contracts/instance/service/ClaimService.sol +0 -437
  645. package/contracts/instance/service/DistributionService.sol +0 -348
  646. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  647. package/contracts/instance/service/IPolicyService.sol +0 -80
  648. package/contracts/instance/service/IPoolService.sol +0 -114
  649. package/contracts/instance/service/IPricingService.sol +0 -37
  650. package/contracts/instance/service/IProductService.sol +0 -40
  651. package/contracts/instance/service/PolicyService.sol +0 -376
  652. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  653. package/contracts/instance/service/PoolService.sol +0 -403
  654. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  655. package/contracts/instance/service/PricingService.sol +0 -275
  656. package/contracts/instance/service/PricingServiceManager.sol +0 -51
  657. package/contracts/instance/service/ProductService.sol +0 -210
  658. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  659. package/contracts/registry/RegistryAccessManager.sol +0 -216
  660. package/contracts/registry/ReleaseManager.sol +0 -324
  661. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  662. package/contracts/shared/ContractDeployerLib.sol +0 -72
  663. package/contracts/test/TestFee.sol +0 -25
  664. package/contracts/test/TestRegisterable.sol +0 -18
  665. package/contracts/test/TestRoleId.sol +0 -14
  666. package/contracts/test/TestService.sol +0 -25
  667. package/contracts/test/TestToken.sol +0 -26
  668. package/contracts/test/TestVersion.sol +0 -44
  669. package/contracts/test/TestVersionable.sol +0 -17
  670. package/contracts/types/ChainId.sol +0 -38
  671. package/contracts/types/NumberId.sol +0 -52
  672. package/contracts/types/ObjectType.sol +0 -161
  673. package/contracts/types/RoleId.sol +0 -97
  674. package/contracts/types/Seconds.sol +0 -54
  675. /package/contracts/{types → type}/DistributorType.sol +0 -0
  676. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,697 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IRegistry} from "../registry/IRegistry.sol";
7
+ import {Product} from "./Product.sol";
8
+ import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
10
+ import {IPolicy} from "../instance/module/IPolicy.sol";
11
+
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";
17
+ import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
18
+ import {NftId} from "../type/NftId.sol";
19
+ import {ReferralId} from "../type/Referral.sol";
20
+ import {StateId} from "../type/StateId.sol";
21
+ import {VersionPart} from "../type/Version.sol";
22
+
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
+
37
+ contract PolicyService is
38
+ ComponentVerifyingService,
39
+ IPolicyService
40
+ {
41
+ IApplicationService internal _applicationService;
42
+ IComponentService internal _componentService;
43
+ IBundleService internal _bundleService;
44
+ IClaimService internal _claimService;
45
+ IDistributionService internal _distributionService;
46
+ IPoolService internal _poolService;
47
+ IPricingService internal _pricingService;
48
+
49
+ function _initialize(
50
+ address owner,
51
+ bytes memory data
52
+ )
53
+ internal
54
+ virtual override
55
+ initializer
56
+ {
57
+ (
58
+ address registryAddress,
59
+ address authority
60
+ ) = abi.decode(data, (address, address));
61
+
62
+ _initializeService(registryAddress, authority, owner);
63
+
64
+ VersionPart majorVersion = getVersion().toMajorPart();
65
+ _applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
66
+ _bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
67
+ _componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
68
+ _claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
69
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
70
+ _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
71
+ _pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
72
+
73
+ _registerInterface(type(IPolicyService).interfaceId);
74
+ }
75
+
76
+
77
+ function decline(
78
+ NftId applicationNftId // = policyNftId
79
+ )
80
+ external
81
+ virtual
82
+ nonReentrant()
83
+ {
84
+ _checkNftType(applicationNftId, POLICY());
85
+
86
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
87
+ InstanceReader instanceReader = instance.getInstanceReader();
88
+
89
+ // check policy is in state applied
90
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
91
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
92
+ }
93
+
94
+ // check policy matches with calling product
95
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
96
+ if(applicationInfo.productNftId != productNftId) {
97
+ revert ErrorPolicyServicePolicyProductMismatch(
98
+ applicationNftId,
99
+ applicationInfo.productNftId,
100
+ productNftId);
101
+ }
102
+
103
+
104
+ // store updated policy info
105
+ instance.getInstanceStore().updatePolicyState(
106
+ applicationNftId,
107
+ DECLINED());
108
+
109
+ emit LogPolicyServicePolicyDeclined(applicationNftId);
110
+ }
111
+
112
+
113
+ /// @inheritdoc IPolicyService
114
+ function createPolicy(
115
+ NftId applicationNftId, // = policyNftId
116
+ Timestamp activateAt
117
+ )
118
+ external
119
+ virtual
120
+ nonReentrant()
121
+ {
122
+ _checkNftType(applicationNftId, POLICY());
123
+
124
+ // check caller is registered product
125
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
126
+ InstanceReader instanceReader = instance.getInstanceReader();
127
+
128
+ // check policy is in state applied
129
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
130
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
131
+ }
132
+
133
+ // check policy matches with calling product
134
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
135
+ if(applicationInfo.productNftId != productNftId) {
136
+ revert ErrorPolicyServicePolicyProductMismatch(
137
+ applicationNftId,
138
+ applicationInfo.productNftId,
139
+ productNftId);
140
+ }
141
+
142
+ // actual collateralizaion
143
+ _poolService.lockCollateral(
144
+ instance,
145
+ address(instanceReader.getComponentInfo(productNftId).token),
146
+ productNftId,
147
+ applicationNftId,
148
+ applicationInfo.bundleNftId,
149
+ applicationInfo.sumInsuredAmount);
150
+
151
+ // optional activation of policy
152
+ if(activateAt > zeroTimestamp()) {
153
+ applicationInfo = _activate(
154
+ applicationNftId,
155
+ applicationInfo,
156
+ activateAt);
157
+ }
158
+
159
+ // update policy and set state to collateralized
160
+ instance.getInstanceStore().updatePolicy(
161
+ applicationNftId,
162
+ applicationInfo,
163
+ COLLATERALIZED());
164
+
165
+ // calculate and store premium
166
+ IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
167
+ productNftId,
168
+ applicationInfo.riskId,
169
+ applicationInfo.sumInsuredAmount,
170
+ applicationInfo.lifetime,
171
+ applicationInfo.applicationData,
172
+ applicationInfo.bundleNftId,
173
+ applicationInfo.referralId);
174
+
175
+ instance.getInstanceStore().createPremium(
176
+ applicationNftId,
177
+ premium);
178
+
179
+ // update referral counter
180
+ {
181
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
182
+
183
+ if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
184
+ _distributionService.processReferral(
185
+ productInfo.distributionNftId,
186
+ applicationInfo.referralId);
187
+ }
188
+ }
189
+
190
+ // log policy creation before interactions with token and policy holder
191
+ emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
192
+
193
+ // TODO add calling pool contract if it needs to validate application
194
+
195
+ // callback to policy holder if applicable
196
+ _policyHolderPolicyActivated(applicationNftId, activateAt);
197
+ }
198
+
199
+
200
+ /// @inheritdoc IPolicyService
201
+ function collectPremium(
202
+ NftId policyNftId,
203
+ Timestamp activateAt
204
+ )
205
+ external
206
+ virtual
207
+ nonReentrant()
208
+ {
209
+ _checkNftType(policyNftId, POLICY());
210
+
211
+ // check caller is registered product
212
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
213
+ InstanceReader instanceReader = instance.getInstanceReader();
214
+ StateId stateId = instanceReader.getPolicyState(policyNftId);
215
+
216
+ // check policy is in state collateralized or active
217
+ if (!(stateId == COLLATERALIZED())) {
218
+ revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
219
+ }
220
+
221
+ // check if premium is already collected
222
+ if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
223
+ revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
224
+ }
225
+
226
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
227
+ IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
228
+
229
+ _processPremium(
230
+ instance,
231
+ policyNftId,
232
+ policyInfo,
233
+ premium);
234
+
235
+ // optionally activate policy
236
+ if(activateAt.gtz()) {
237
+ policyInfo = _activate(policyNftId, policyInfo, activateAt);
238
+ }
239
+
240
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
241
+ instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
242
+
243
+ // log premium collection before interactions with token
244
+ emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
245
+
246
+ _transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
247
+ }
248
+
249
+ /// @inheritdoc IPolicyService
250
+ function activate(NftId policyNftId, Timestamp activateAt)
251
+ external
252
+ virtual
253
+ nonReentrant()
254
+ {
255
+ _checkNftType(policyNftId, POLICY());
256
+
257
+ // check caller is registered product
258
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
259
+ InstanceReader instanceReader = instance.getInstanceReader();
260
+
261
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
262
+ policyInfo = _activate(policyNftId, policyInfo, activateAt);
263
+
264
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
265
+
266
+ // log policy activation before interactions with policy holder
267
+ emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
268
+
269
+ // callback to policy holder if applicable
270
+ _policyHolderPolicyActivated(policyNftId, activateAt);
271
+ }
272
+
273
+
274
+ /// @inheritdoc IPolicyService
275
+ function expire(
276
+ NftId policyNftId,
277
+ Timestamp expireAt
278
+ )
279
+ external
280
+ virtual
281
+ nonReentrant()
282
+ returns (Timestamp expiredAt)
283
+ {
284
+ _checkNftType(policyNftId, POLICY());
285
+
286
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
287
+
288
+ // check policy matches with calling product
289
+ IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
290
+ if(policyInfo.productNftId != productNftId) {
291
+ revert ErrorPolicyServicePolicyProductMismatch(
292
+ policyNftId,
293
+ policyInfo.productNftId,
294
+ productNftId);
295
+ }
296
+
297
+ return _expire(
298
+ instance,
299
+ policyNftId,
300
+ expireAt
301
+ );
302
+ }
303
+
304
+ /// @inheritdoc IPolicyService
305
+ function expirePolicy(
306
+ IInstance instance,
307
+ NftId policyNftId,
308
+ Timestamp expireAt
309
+ )
310
+ external
311
+ virtual
312
+ nonReentrant()
313
+ returns (Timestamp expiredAt)
314
+ {
315
+ _checkNftType(policyNftId, POLICY());
316
+
317
+ return _expire(
318
+ instance,
319
+ policyNftId,
320
+ expireAt
321
+ );
322
+ }
323
+
324
+ function _expire(
325
+ IInstance instance,
326
+ NftId policyNftId,
327
+ Timestamp expireAt
328
+ )
329
+ internal
330
+ returns (Timestamp expiredAt)
331
+ {
332
+ InstanceReader instanceReader = instance.getInstanceReader();
333
+
334
+ // check policy is active
335
+ StateId policyState = instanceReader.getPolicyState(policyNftId);
336
+ IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
337
+ if (!_policyHasBeenActivated(policyState, policyInfo)) {
338
+ revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
339
+ }
340
+
341
+ // set return value to provided timestamp
342
+ expiredAt = expireAt;
343
+
344
+ // update expiredAt to current block timestamp if not set
345
+ if (expiredAt.eqz()) {
346
+ expiredAt = TimestampLib.blockTimestamp();
347
+ }
348
+
349
+ // check expiredAt represents a valid expiry time
350
+ if (expiredAt >= policyInfo.expiredAt) {
351
+ revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
352
+ }
353
+ if (expiredAt < TimestampLib.blockTimestamp()) {
354
+ revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
355
+ }
356
+
357
+ // update policyInfo with new expiredAt timestamp
358
+ Timestamp originalExpiredAt = policyInfo.expiredAt;
359
+ policyInfo.expiredAt = expiredAt;
360
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
361
+
362
+ emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
363
+
364
+ // callback to policy holder if applicable
365
+ _policyHolderPolicyExpired(policyNftId, expiredAt);
366
+ }
367
+
368
+
369
+ function close(
370
+ NftId policyNftId
371
+ )
372
+ external
373
+ virtual
374
+ nonReentrant()
375
+ {
376
+ _checkNftType(policyNftId, POLICY());
377
+
378
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
379
+ InstanceReader instanceReader = instance.getInstanceReader();
380
+
381
+ // check that policy has been activated
382
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
383
+ StateId policyState = instanceReader.getPolicyState(policyNftId);
384
+ if (!_policyHasBeenActivated(policyState, policyInfo)) {
385
+ revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
386
+ }
387
+
388
+ // check that policy has not already been closed
389
+ if (policyInfo.closedAt.gtz()) {
390
+ revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
391
+ }
392
+
393
+ // check that policy does not have any open claims
394
+ if (policyInfo.openClaimsCount > 0) {
395
+ revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
396
+ }
397
+
398
+ // TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
399
+ // TODO consider to remove requirement for fully paid premiums altogether
400
+ if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
401
+ revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
402
+ }
403
+
404
+ // release (remaining) collateral that was blocked by policy
405
+ _poolService.releaseCollateral(
406
+ instance,
407
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
408
+ policyNftId,
409
+ policyInfo);
410
+
411
+ // TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
412
+
413
+ // update policy state to closed
414
+ policyInfo.closedAt = TimestampLib.blockTimestamp();
415
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
416
+
417
+ emit LogPolicyServicePolicyClosed(policyNftId);
418
+ }
419
+
420
+
421
+ /// @dev calculates the premium and updates all counters in the other services
422
+ function _processPremium(
423
+ IInstance instance,
424
+ NftId applicationNftId,
425
+ IPolicy.PolicyInfo memory applicationInfo,
426
+ IPolicy.PremiumInfo memory premium
427
+ )
428
+ internal
429
+ virtual
430
+ {
431
+ NftId productNftId = applicationInfo.productNftId;
432
+ InstanceReader instanceReader = instance.getInstanceReader();
433
+
434
+ // check if premium balance and allowance of policy holder is sufficient
435
+ {
436
+ TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
437
+ address policyHolder = getRegistry().ownerOf(applicationNftId);
438
+
439
+ _checkPremiumBalanceAndAllowance(
440
+ tokenHandler.getToken(),
441
+ address(tokenHandler),
442
+ policyHolder,
443
+ premium.premiumAmount);
444
+ }
445
+
446
+ // update the counters
447
+ _processSale(
448
+ instanceReader,
449
+ instance.getInstanceStore(),
450
+ productNftId,
451
+ applicationInfo.bundleNftId,
452
+ applicationInfo.referralId,
453
+ premium);
454
+ }
455
+
456
+ function _activate(
457
+ NftId policyNftId,
458
+ IPolicy.PolicyInfo memory policyInfo,
459
+ Timestamp activateAt
460
+ )
461
+ internal
462
+ virtual
463
+ view
464
+ returns (IPolicy.PolicyInfo memory)
465
+ {
466
+ // fail if policy has already been activated and activateAt is different
467
+ if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
468
+ revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
469
+ }
470
+
471
+ // ignore if policy has already been activated and activateAt is the same
472
+ if (policyInfo.activatedAt == activateAt) {
473
+ return policyInfo;
474
+ }
475
+
476
+ policyInfo.activatedAt = activateAt;
477
+ policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
478
+
479
+ return policyInfo;
480
+ }
481
+
482
+ /// @dev update counters by calling the involved services
483
+ function _processSale(
484
+ InstanceReader instanceReader,
485
+ InstanceStore instanceStore,
486
+ NftId productNftId,
487
+ NftId bundleNftId,
488
+ ReferralId referralId,
489
+ IPolicy.PremiumInfo memory premium
490
+ )
491
+ internal
492
+ virtual
493
+ {
494
+ (NftId distributionNftId, , , ) = _getDistributionNftAndWallets(
495
+ instanceReader,
496
+ productNftId);
497
+
498
+ // update product fees, distribution and pool fees
499
+ _componentService.increaseProductFees(
500
+ instanceStore,
501
+ productNftId,
502
+ premium.productFeeVarAmount + premium.productFeeFixAmount);
503
+
504
+ // update distribution fees and distributor commission and pool fees
505
+ if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
506
+ _distributionService.processSale(
507
+ distributionNftId,
508
+ referralId,
509
+ premium);
510
+ }
511
+
512
+ // update pool and bundle fees
513
+ _poolService.processSale(
514
+ bundleNftId,
515
+ premium);
516
+ }
517
+
518
+
519
+ /// @dev transfer the premium to the wallets the premium is distributed to
520
+ function _transferFunds(
521
+ InstanceReader instanceReader,
522
+ NftId policyNftId,
523
+ NftId productNftId,
524
+ IPolicy.PremiumInfo memory premium
525
+ )
526
+ internal
527
+ virtual
528
+ {
529
+ TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
530
+ address policyHolder = getRegistry().ownerOf(policyNftId);
531
+
532
+ (
533
+ ,
534
+ address distributionWallet,
535
+ address poolWallet,
536
+ address productWallet
537
+ ) = _getDistributionNftAndWallets(
538
+ instanceReader,
539
+ productNftId);
540
+
541
+ tokenHandler.collectTokensToThreeRecipients(
542
+ policyHolder,
543
+ productWallet,
544
+ premium.productFeeAmount,
545
+ distributionWallet,
546
+ premium.distributionFeeAndCommissionAmount,
547
+ poolWallet,
548
+ premium.poolPremiumAndFeeAmount);
549
+ }
550
+
551
+
552
+ /// @dev checks that policy has been collateralized and has been activated.
553
+ /// does not check if policy has been expired or closed.
554
+ function _policyHasBeenActivated(
555
+ StateId policyState,
556
+ IPolicy.PolicyInfo memory policyInfo
557
+ )
558
+ internal
559
+ view
560
+ returns (bool)
561
+ {
562
+ if (policyState != COLLATERALIZED()) { return false; }
563
+ if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
564
+ return true;
565
+ }
566
+
567
+
568
+ /// @dev checks the balance and allowance of the policy holder
569
+ function _checkPremiumBalanceAndAllowance(
570
+ IERC20Metadata token,
571
+ address tokenHandlerAddress,
572
+ address policyHolder,
573
+ Amount premiumAmount
574
+ )
575
+ internal
576
+ virtual
577
+ view
578
+ {
579
+ uint256 premium = premiumAmount.toInt();
580
+ uint256 balance = token.balanceOf(policyHolder);
581
+ uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
582
+
583
+ if (balance < premium) {
584
+ revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
585
+ }
586
+
587
+ if (allowance < premium) {
588
+ revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
589
+ }
590
+ }
591
+
592
+
593
+ function _policyHolderPolicyActivated(
594
+ NftId policyNftId,
595
+ Timestamp activateAt
596
+ )
597
+ internal
598
+ virtual
599
+ {
600
+ // immediately return if policy is not activated
601
+ if (activateAt.eqz()) {
602
+ return;
603
+ }
604
+
605
+ // get policy holder address
606
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
607
+
608
+ // execute callback if policy holder implements IPolicyHolder
609
+ if (address(policyHolder) != address(0)) {
610
+ policyHolder.policyActivated(policyNftId, activateAt);
611
+ }
612
+ }
613
+
614
+
615
+ function _policyHolderPolicyExpired(
616
+ NftId policyNftId,
617
+ Timestamp expiredAt
618
+ )
619
+ internal
620
+ virtual
621
+ {
622
+ // immediately return if policy is not activated
623
+ if (expiredAt.eqz()) {
624
+ return;
625
+ }
626
+
627
+ // get policy holder address
628
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
629
+
630
+ // execute callback if policy holder implements IPolicyHolder
631
+ if (address(policyHolder) != address(0)) {
632
+ policyHolder.policyExpired(policyNftId, expiredAt);
633
+ }
634
+ }
635
+
636
+
637
+ function _getPolicyHolder(NftId policyNftId)
638
+ internal
639
+ view
640
+ returns (IPolicyHolder policyHolder)
641
+ {
642
+ address policyHolderAddress = getRegistry().ownerOf(policyNftId);
643
+ policyHolder = IPolicyHolder(policyHolderAddress);
644
+
645
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
646
+ policyHolder = IPolicyHolder(address(0));
647
+ }
648
+ }
649
+
650
+
651
+ function _getTokenHandler(
652
+ InstanceReader instanceReader,
653
+ NftId productNftId
654
+ )
655
+ internal
656
+ virtual
657
+ view
658
+ returns (
659
+ TokenHandler tokenHandler
660
+ )
661
+ {
662
+ tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
663
+ }
664
+
665
+
666
+ function _getDistributionNftAndWallets(
667
+ InstanceReader instanceReader,
668
+ NftId productNftId
669
+ )
670
+ internal
671
+ virtual
672
+ view returns (
673
+ NftId distributionNftId,
674
+ address distributionWallet,
675
+ address poolWallet,
676
+ address productWallet
677
+ )
678
+ {
679
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
680
+ distributionNftId = productInfo.distributionNftId;
681
+ distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
682
+ poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
683
+ productWallet = instanceReader.getComponentInfo(productNftId).wallet;
684
+ }
685
+
686
+
687
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
688
+ IRegistry.ObjectInfo memory productInfo;
689
+ (, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
690
+ product = Product(productInfo.objectAddress);
691
+ }
692
+
693
+
694
+ function _getDomain() internal pure override returns(ObjectType) {
695
+ return POLICY();
696
+ }
697
+ }