@etherisc/gif-next 0.0.2-eb98db7-932 → 0.0.2-eba4d8b-925

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