@etherisc/gif-next 0.0.2-7f39e38-904 → 0.0.2-7fbee0d-269

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 (632) hide show
  1. package/README.md +136 -317
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +810 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1735 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +817 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1400 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +465 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +407 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +652 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +844 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +146 -617
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +767 -301
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +267 -116
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +152 -283
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +553 -77
  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 +1474 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +844 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +844 -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/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  53. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +383 -0
  54. package/artifacts/contracts/examples/flight/FlightMessageVerfier.sol/FlightMessageVerifier.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightMessageVerfier.sol/FlightMessageVerifier.json +253 -0
  56. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  58. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
  60. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  62. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
  64. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2180 -0
  66. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
  68. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  69. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  70. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  71. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  84. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  85. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
  86. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  87. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +59 -205
  88. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  90. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  92. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  93. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +614 -92
  94. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +517 -75
  96. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  97. package/artifacts/contracts/instance/Instance.sol/Instance.json +639 -237
  98. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  99. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2400 -0
  100. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  101. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +872 -0
  102. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  103. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1806 -748
  104. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +509 -224
  106. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +175 -98
  108. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  109. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1482 -1911
  110. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  111. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  112. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  113. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  114. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  115. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  116. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  117. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  118. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  120. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  121. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  122. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  123. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  124. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  125. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  126. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  127. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  128. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  129. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  130. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  131. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  132. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  133. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  134. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  135. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  136. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +849 -0
  137. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  138. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  139. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  140. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  141. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  142. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  143. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  144. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  145. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  146. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  147. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +830 -0
  149. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  150. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  151. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  152. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +844 -0
  153. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  154. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +582 -235
  155. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +257 -94
  157. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  158. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +398 -49
  159. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  160. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +151 -404
  161. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  162. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +770 -365
  163. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  164. package/artifacts/contracts/pool/Pool.sol/Pool.json +148 -692
  165. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  166. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  167. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  168. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +947 -525
  169. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +260 -93
  171. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  172. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +382 -166
  173. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +201 -90
  175. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  176. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  177. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  178. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +844 -0
  179. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  180. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +502 -230
  181. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +229 -110
  183. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  184. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +320 -9
  185. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  186. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +369 -18
  187. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  188. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +436 -101
  189. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  190. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +202 -80
  191. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  192. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +291 -274
  193. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  194. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +295 -150
  195. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  196. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +564 -292
  197. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  198. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  199. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  200. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +239 -96
  201. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  202. package/artifacts/contracts/product/PricingService.sol/PricingService.json +262 -299
  203. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  204. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +193 -114
  205. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  206. package/artifacts/contracts/product/Product.sol/Product.json +322 -606
  207. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  208. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  209. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  210. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +794 -0
  211. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  212. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  213. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  214. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +402 -79
  215. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  216. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +125 -146
  217. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  218. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  219. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  220. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  221. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  222. package/artifacts/contracts/registry/Registry.sol/Registry.json +719 -120
  223. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  224. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2255 -0
  225. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  226. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  227. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  228. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +174 -274
  229. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  230. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +180 -92
  231. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  232. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
  233. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  234. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  235. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  236. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1401 -0
  237. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  238. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +705 -0
  239. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  240. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +135 -67
  241. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  242. package/artifacts/contracts/shared/Component.sol/Component.json +92 -287
  243. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  244. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +632 -542
  245. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  246. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +230 -113
  247. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  248. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  249. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  250. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  251. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  252. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  253. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  254. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  255. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  256. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +99 -104
  257. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  258. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +549 -228
  259. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  260. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +138 -140
  261. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  262. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  263. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  264. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +42 -1
  265. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  266. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  267. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  268. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +173 -0
  269. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  270. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  271. package/artifacts/contracts/shared/IService.sol/IService.json +103 -2
  272. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  273. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  274. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  275. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +131 -376
  276. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  277. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  278. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  279. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  280. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  281. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +45 -55
  282. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  283. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  284. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  285. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +148 -98
  286. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  287. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  288. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  289. package/artifacts/contracts/shared/Service.sol/Service.json +96 -102
  290. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  291. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  292. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  293. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  294. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  295. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  296. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  297. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1558 -246
  298. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  299. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +382 -119
  300. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  301. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  302. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  303. package/artifacts/contracts/staking/Staking.sol/Staking.json +1734 -561
  304. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  305. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  306. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  307. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +232 -113
  308. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  309. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +430 -94
  310. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  311. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +442 -305
  312. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  313. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +181 -93
  314. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  315. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2044 -637
  316. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  317. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  318. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  319. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +253 -68
  320. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  321. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  322. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Amount.sol/AmountLib.json +122 -5
  324. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  326. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  328. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  330. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  332. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  334. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  336. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  337. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  338. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
  340. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  341. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  342. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +150 -4
  344. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  346. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  348. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  350. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  351. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  352. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  354. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  355. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
  356. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  357. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +136 -2
  358. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  359. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  360. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  361. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  362. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  363. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  364. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  365. package/artifacts/contracts/type/String.sol/StrLib.json +199 -0
  366. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  367. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +69 -5
  368. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  369. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  370. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  371. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  372. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  373. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  374. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  375. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  376. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  377. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +672 -0
  378. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  379. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  380. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  381. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  382. package/contracts/accounting/AccountingService.sol +274 -0
  383. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  384. package/contracts/accounting/IAccountingService.sol +47 -0
  385. package/contracts/authorization/AccessAdmin.sol +679 -0
  386. package/contracts/authorization/AccessAdminLib.sol +678 -0
  387. package/contracts/authorization/AccessManagerCloneable.sol +140 -0
  388. package/contracts/authorization/Authorization.sol +190 -0
  389. package/contracts/authorization/IAccess.sol +66 -0
  390. package/contracts/authorization/IAccessAdmin.sol +142 -0
  391. package/contracts/authorization/IAuthorization.sol +26 -0
  392. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  393. package/contracts/authorization/ServiceAuthorization.sol +300 -0
  394. package/contracts/distribution/BasicDistribution.sol +140 -0
  395. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  396. package/contracts/distribution/Distribution.sol +125 -143
  397. package/contracts/distribution/DistributionService.sol +287 -137
  398. package/contracts/distribution/DistributionServiceManager.sol +8 -23
  399. package/contracts/distribution/IDistributionComponent.sol +21 -42
  400. package/contracts/distribution/IDistributionService.sol +60 -26
  401. package/contracts/examples/fire/DamageLevel.sol +59 -0
  402. package/contracts/examples/fire/FirePool.sol +86 -0
  403. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  404. package/contracts/examples/fire/FireProduct.sol +433 -0
  405. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  406. package/contracts/examples/fire/FireUSD.sol +26 -0
  407. package/contracts/examples/flight/FlightLib.sol +273 -0
  408. package/contracts/examples/flight/FlightMessageVerfier.sol +129 -0
  409. package/contracts/examples/flight/FlightOracle.sol +167 -0
  410. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  411. package/contracts/examples/flight/FlightPool.sol +89 -0
  412. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  413. package/contracts/examples/flight/FlightProduct.sol +464 -0
  414. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  415. package/contracts/examples/flight/FlightUSD.sol +26 -0
  416. package/contracts/examples/flight/originalV1.sol +396 -0
  417. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  418. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  419. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  420. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  421. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  422. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  423. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  424. package/contracts/instance/BaseStore.sol +93 -0
  425. package/contracts/instance/BundleSet.sol +130 -0
  426. package/contracts/instance/IBaseStore.sol +37 -0
  427. package/contracts/instance/IInstance.sol +128 -49
  428. package/contracts/instance/IInstanceService.sol +82 -46
  429. package/contracts/instance/Instance.sol +254 -131
  430. package/contracts/instance/InstanceAdmin.sol +307 -0
  431. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  432. package/contracts/instance/InstanceReader.sol +499 -237
  433. package/contracts/instance/InstanceService.sol +391 -244
  434. package/contracts/instance/InstanceServiceManager.sol +8 -13
  435. package/contracts/instance/InstanceStore.sol +172 -109
  436. package/contracts/instance/ProductStore.sol +290 -0
  437. package/contracts/instance/RiskSet.sol +126 -0
  438. package/contracts/instance/TargetNames.sol +10 -0
  439. package/contracts/instance/base/BalanceStore.sol +15 -12
  440. package/contracts/instance/base/Cloneable.sol +2 -25
  441. package/contracts/instance/base/ObjectCounter.sol +20 -0
  442. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  443. package/contracts/instance/base/ObjectSet.sol +77 -0
  444. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  445. package/contracts/instance/module/IBundle.sol +6 -5
  446. package/contracts/instance/module/IComponents.sol +29 -21
  447. package/contracts/instance/module/IDistribution.sol +21 -9
  448. package/contracts/instance/module/IPolicy.sol +50 -29
  449. package/contracts/instance/module/IRisk.sol +5 -0
  450. package/contracts/mock/Dip.sol +1 -1
  451. package/contracts/oracle/BasicOracle.sol +44 -0
  452. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  453. package/contracts/oracle/IOracle.sol +41 -0
  454. package/contracts/oracle/IOracleComponent.sol +33 -0
  455. package/contracts/oracle/IOracleService.sol +66 -0
  456. package/contracts/oracle/Oracle.sol +152 -0
  457. package/contracts/oracle/OracleService.sol +310 -0
  458. package/contracts/oracle/OracleServiceManager.sol +39 -0
  459. package/contracts/pool/BasicPool.sol +161 -0
  460. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  461. package/contracts/pool/BundleService.sol +225 -135
  462. package/contracts/pool/BundleServiceManager.sol +8 -11
  463. package/contracts/pool/IBundleService.sol +43 -33
  464. package/contracts/pool/IPoolComponent.sol +20 -70
  465. package/contracts/pool/IPoolService.sol +98 -75
  466. package/contracts/pool/Pool.sol +196 -164
  467. package/contracts/pool/PoolLib.sol +341 -0
  468. package/contracts/pool/PoolService.sol +444 -254
  469. package/contracts/pool/PoolServiceManager.sol +6 -9
  470. package/contracts/product/ApplicationService.sol +159 -86
  471. package/contracts/product/ApplicationServiceManager.sol +6 -6
  472. package/contracts/product/BasicProduct.sol +48 -0
  473. package/contracts/product/BasicProductAuthorization.sol +64 -0
  474. package/contracts/product/ClaimService.sol +396 -207
  475. package/contracts/product/ClaimServiceManager.sol +6 -6
  476. package/contracts/product/IApplicationService.sol +29 -3
  477. package/contracts/product/IClaimService.sol +51 -8
  478. package/contracts/product/IPolicyService.sol +61 -37
  479. package/contracts/product/IPricingService.sol +11 -10
  480. package/contracts/product/IProductComponent.sol +29 -9
  481. package/contracts/product/IRiskService.sol +48 -0
  482. package/contracts/product/PolicyService.sol +450 -278
  483. package/contracts/product/PolicyServiceLib.sol +139 -0
  484. package/contracts/product/PolicyServiceManager.sol +6 -9
  485. package/contracts/product/PricingService.sol +95 -90
  486. package/contracts/product/PricingServiceManager.sol +6 -9
  487. package/contracts/product/Product.sol +261 -147
  488. package/contracts/product/RiskService.sol +189 -0
  489. package/contracts/product/RiskServiceManager.sol +39 -0
  490. package/contracts/registry/ChainNft.sol +72 -39
  491. package/contracts/registry/IRegistry.sol +88 -41
  492. package/contracts/registry/IRegistryService.sol +4 -10
  493. package/contracts/registry/IRelease.sol +29 -0
  494. package/contracts/registry/ITransferInterceptor.sol +1 -2
  495. package/contracts/registry/Registry.sol +389 -231
  496. package/contracts/registry/RegistryAdmin.sol +173 -0
  497. package/contracts/registry/RegistryAuthorization.sol +337 -0
  498. package/contracts/registry/RegistryService.sol +50 -75
  499. package/contracts/registry/RegistryServiceManager.sol +5 -24
  500. package/contracts/registry/ReleaseAdmin.sol +199 -0
  501. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  502. package/contracts/registry/ReleaseRegistry.sol +525 -0
  503. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  504. package/contracts/registry/TokenRegistry.sol +73 -110
  505. package/contracts/shared/Component.sol +72 -148
  506. package/contracts/shared/ComponentService.sol +466 -370
  507. package/contracts/shared/ComponentServiceManager.sol +10 -7
  508. package/contracts/shared/ContractLib.sol +312 -0
  509. package/contracts/shared/EcdsaChecker.sol +5 -0
  510. package/contracts/shared/IComponent.sol +7 -23
  511. package/contracts/shared/IComponentService.sol +51 -31
  512. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  513. package/contracts/shared/ILifecycle.sol +3 -2
  514. package/contracts/shared/INftOwnable.sol +5 -1
  515. package/contracts/shared/IPolicyHolder.sol +12 -22
  516. package/contracts/shared/IRegisterable.sol +22 -1
  517. package/contracts/shared/IService.sol +10 -5
  518. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  519. package/contracts/shared/InstanceLinkedComponent.sol +145 -58
  520. package/contracts/shared/Lifecycle.sol +30 -63
  521. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  522. package/contracts/shared/NftOwnable.sol +35 -24
  523. package/contracts/shared/PolicyHolder.sol +19 -57
  524. package/contracts/shared/Registerable.sol +52 -21
  525. package/contracts/shared/RegistryLinked.sol +9 -14
  526. package/contracts/shared/Service.sol +31 -41
  527. package/contracts/shared/TokenHandler.sol +310 -26
  528. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  529. package/contracts/staking/IStaking.sol +284 -70
  530. package/contracts/staking/IStakingService.sol +59 -94
  531. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  532. package/contracts/staking/Staking.sol +558 -263
  533. package/contracts/staking/StakingLib.sol +195 -0
  534. package/contracts/staking/StakingManager.sol +20 -32
  535. package/contracts/staking/StakingReader.sol +84 -60
  536. package/contracts/staking/StakingService.sol +108 -162
  537. package/contracts/staking/StakingServiceManager.sol +10 -8
  538. package/contracts/staking/StakingStore.sol +1222 -183
  539. package/contracts/staking/TargetHandler.sol +132 -0
  540. package/contracts/staking/TargetManagerLib.sol +95 -40
  541. package/contracts/type/Amount.sol +43 -3
  542. package/contracts/type/Blocknumber.sol +24 -23
  543. package/contracts/type/ChainId.sol +101 -0
  544. package/contracts/type/ClaimId.sol +6 -1
  545. package/contracts/type/Fee.sol +8 -8
  546. package/contracts/type/Key32.sol +2 -2
  547. package/contracts/type/Key32Set.sol +62 -0
  548. package/contracts/type/NftId.sol +15 -8
  549. package/contracts/type/ObjectType.sol +174 -65
  550. package/contracts/type/PayoutId.sol +10 -10
  551. package/contracts/type/Referral.sol +7 -0
  552. package/contracts/type/RequestId.sol +75 -0
  553. package/contracts/type/RequestIdSet.sol +62 -0
  554. package/contracts/type/RiskId.sol +38 -6
  555. package/contracts/type/RoleId.sol +121 -84
  556. package/contracts/type/Seconds.sol +54 -1
  557. package/contracts/type/Selector.sol +107 -0
  558. package/contracts/type/StateId.sol +27 -1
  559. package/contracts/type/String.sol +95 -0
  560. package/contracts/type/Timestamp.sol +30 -10
  561. package/contracts/type/UFixed.sol +62 -125
  562. package/contracts/type/Version.sol +57 -6
  563. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  564. package/contracts/{shared → upgradeability}/ProxyManager.sol +102 -51
  565. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  566. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  567. package/package.json +13 -8
  568. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  569. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  570. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  571. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  572. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  573. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
  574. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  575. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  576. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  577. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  578. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  579. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -381
  580. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  581. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -673
  582. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  583. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -675
  584. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  585. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -322
  586. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  587. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1151
  588. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  589. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  590. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  591. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  592. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  593. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  594. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  595. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  596. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  597. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  598. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -581
  599. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  600. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  601. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  602. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -598
  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/staking/IStakingManager.sol/IStakingManager.dbg.json +0 -4
  607. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.json +0 -37
  608. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +0 -4
  609. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +0 -357
  610. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  611. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -402
  612. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  613. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  614. package/contracts/instance/BundleManager.sol +0 -126
  615. package/contracts/instance/InstanceAccessManager.sol +0 -543
  616. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
  617. package/contracts/instance/base/ObjectManager.sol +0 -82
  618. package/contracts/instance/module/IAccess.sol +0 -54
  619. package/contracts/product/IProductService.sol +0 -33
  620. package/contracts/product/ProductService.sol +0 -124
  621. package/contracts/product/ProductServiceManager.sol +0 -42
  622. package/contracts/registry/RegistryAccessManager.sol +0 -196
  623. package/contracts/registry/ReleaseManager.sol +0 -563
  624. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  625. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  626. package/contracts/shared/ComponentVerifyingService.sol +0 -111
  627. package/contracts/shared/IKeyValueStore.sol +0 -53
  628. package/contracts/shared/KeyValueStore.sol +0 -130
  629. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  630. package/contracts/staking/IStakingManager.sol +0 -15
  631. package/contracts/staking/IStakingStore.sol +0 -130
  632. package/contracts/staking/StakeManagerLib.sol +0 -156
@@ -1,61 +1,44 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRegistry} from "../registry/IRegistry.sol";
5
- import {Product} from "./Product.sol";
6
- import {IComponents} from "../instance/module/IComponents.sol";
7
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
8
- import {IInstance} from "../instance/IInstance.sol";
9
- import {IPolicy} from "../instance/module/IPolicy.sol";
10
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
11
- import {IRisk} from "../instance/module/IRisk.sol";
12
- import {IBundle} from "../instance/module/IBundle.sol";
13
-
14
- import {TokenHandler} from "../shared/TokenHandler.sol";
15
-
16
- import {Amount, AmountLib} from "../type/Amount.sol";
17
- import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
18
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
19
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
20
- import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
21
- import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED, CONFIRMED} from "../type/StateId.sol";
22
- import {NftId, NftIdLib} from "../type/NftId.sol";
23
- import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
24
- import {ReferralId} from "../type/Referral.sol";
25
- import {StateId} from "../type/StateId.sol";
26
- import {VersionPart} from "../type/Version.sol";
27
-
28
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
29
- import {IApplicationService} from "./IApplicationService.sol";
30
- import {IBundleService} from "../pool/IBundleService.sol";
31
- import {IClaimService} from "./IClaimService.sol";
4
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
32
5
  import {IComponentService} from "../shared/IComponentService.sol";
6
+ import {IComponents} from "../instance/module/IComponents.sol";
33
7
  import {IDistributionService} from "../distribution/IDistributionService.sol";
34
8
  import {InstanceReader} from "../instance/InstanceReader.sol";
35
9
  import {InstanceStore} from "../instance/InstanceStore.sol";
10
+ import {IInstance} from "../instance/IInstance.sol";
11
+ import {IPolicy} from "../instance/module/IPolicy.sol";
12
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
36
13
  import {IPolicyService} from "./IPolicyService.sol";
37
14
  import {IPoolService} from "../pool/IPoolService.sol";
38
15
  import {IPricingService} from "./IPricingService.sol";
39
- import {IService} from "../shared/IService.sol";
16
+ import {IRegistry} from "../registry/IRegistry.sol";
17
+
18
+ import {Amount} from "../type/Amount.sol";
19
+ import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
20
+ import {ContractLib} from "../shared/ContractLib.sol";
21
+ import {NftId} from "../type/NftId.sol";
22
+ import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, PRICE} from "../type/ObjectType.sol";
23
+ import {PolicyServiceLib} from "./PolicyServiceLib.sol";
24
+ import {ReferralId} from "../type/Referral.sol";
25
+ import {RiskId} from "../type/RiskId.sol";
40
26
  import {Service} from "../shared/Service.sol";
27
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
28
+ import {TokenHandler} from "../shared/TokenHandler.sol";
29
+ import {VersionPart} from "../type/Version.sol";
30
+
41
31
 
42
32
  contract PolicyService is
43
- ComponentVerifyingService,
33
+ Service,
44
34
  IPolicyService
45
35
  {
46
- using NftIdLib for NftId;
47
- using TimestampLib for Timestamp;
48
-
49
- IApplicationService internal _applicationService;
36
+ IAccountingService private _accountingService;
50
37
  IComponentService internal _componentService;
51
- IBundleService internal _bundleService;
52
- IClaimService internal _claimService;
53
38
  IDistributionService internal _distributionService;
54
39
  IPoolService internal _poolService;
55
40
  IPricingService internal _pricingService;
56
41
 
57
- event LogProductServiceSender(address sender);
58
-
59
42
  function _initialize(
60
43
  address owner,
61
44
  bytes memory data
@@ -65,347 +48,462 @@ contract PolicyService is
65
48
  initializer
66
49
  {
67
50
  (
68
- address registryAddress,,
69
- //address managerAddress
70
- address authority
71
- ) = abi.decode(data, (address, address, address));
51
+ address authority,
52
+ address registry
53
+ ) = abi.decode(data, (address, address));
72
54
 
73
- initializeService(registryAddress, authority, owner);
55
+ __Service_init(authority, registry, owner);
74
56
 
75
57
  VersionPart majorVersion = getVersion().toMajorPart();
76
- _applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
77
- _bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
58
+ _accountingService = IAccountingService(getRegistry().getServiceAddress(ACCOUNTING(), majorVersion));
78
59
  _componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
79
- _claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
80
60
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
81
61
  _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
82
62
  _pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
83
63
 
84
- registerInterface(type(IPolicyService).interfaceId);
85
- }
86
-
87
-
88
- function getDomain() public pure override returns(ObjectType) {
89
- return POLICY();
90
- }
91
-
92
-
93
- function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
94
- IRegistry.ObjectInfo memory productInfo;
95
- (, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
96
- product = Product(productInfo.objectAddress);
64
+ _registerInterface(type(IPolicyService).interfaceId);
97
65
  }
98
66
 
99
67
 
100
68
  function decline(
101
- NftId policyNftId
69
+ NftId applicationNftId // = policyNftId
102
70
  )
103
71
  external
104
- override
72
+ virtual
73
+ restricted()
74
+ nonReentrant()
105
75
  {
106
- revert();
76
+ // checks
77
+ (IInstance instance,,) = _getAndVerifyCallerForPolicy(applicationNftId);
78
+
79
+ // check policy is in state applied
80
+ if (instance.getInstanceReader().getPolicyState(applicationNftId) != APPLIED()) {
81
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
82
+ }
83
+
84
+ // effects
85
+ // store updated policy info
86
+ instance.getProductStore().updatePolicyState(
87
+ applicationNftId,
88
+ DECLINED());
89
+
90
+ emit LogPolicyServicePolicyDeclined(applicationNftId);
107
91
  }
108
92
 
109
- event LogDebug(uint idx, string message);
110
93
 
111
- /// @dev underwites application which includes the locking of the required collateral from the pool.
112
- function collateralize(
94
+ /// @inheritdoc IPolicyService
95
+ function createPolicy(
113
96
  NftId applicationNftId, // = policyNftId
114
- bool requirePremiumPayment,
115
- Timestamp activateAt
97
+ Timestamp activateAt,
98
+ Amount maxPremiumAmount
116
99
  )
117
100
  external
118
- virtual override
101
+ virtual
102
+ restricted()
103
+ nonReentrant()
104
+ returns (Amount premiumAmount)
119
105
  {
120
- // check caller is registered product
121
- (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
122
- InstanceReader instanceReader = instance.getInstanceReader();
106
+ // checks
107
+ (
108
+ IInstance instance,
109
+ NftId productNftId,
110
+ IPolicy.PolicyInfo memory applicationInfo
111
+ ) = _getAndVerifyCallerForPolicy(applicationNftId);
123
112
 
124
113
  // check policy is in state applied
114
+ InstanceReader instanceReader = instance.getInstanceReader();
125
115
  if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
126
116
  revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
127
117
  }
128
118
 
129
- // check policy matches with calling product
130
- IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
131
- if(applicationInfo.productNftId != productNftId) {
132
- revert ErrorPolicyServicePolicyProductMismatch(
133
- applicationNftId,
134
- applicationInfo.productNftId,
135
- productNftId);
136
- }
137
-
138
- StateId newPolicyState = COLLATERALIZED();
139
-
119
+ // effects
140
120
  // actual collateralizaion
141
- (
142
- Amount localCollateralAmount,
143
- Amount totalCollateralAmount
144
- ) = _poolService.lockCollateral(
121
+ _poolService.lockCollateral(
145
122
  instance,
123
+ address(instanceReader.getToken(productNftId)),
146
124
  productNftId,
147
125
  applicationNftId,
148
126
  applicationInfo.bundleNftId,
149
127
  applicationInfo.sumInsuredAmount);
150
128
 
151
129
  // optional activation of policy
152
- if(activateAt > zeroTimestamp()) {
153
- newPolicyState = ACTIVE();
154
- applicationInfo.activatedAt = activateAt;
155
- applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
130
+ if(activateAt.gtz()) {
131
+ applicationInfo = PolicyServiceLib.activate(applicationNftId, applicationInfo, activateAt);
156
132
  }
157
133
 
158
- // optional collection of premium
159
- if(requirePremiumPayment) {
160
- Amount premiumPaidAmount = _calculateAndCollectPremium(
161
- instance,
162
- applicationNftId,
163
- applicationInfo);
134
+ // update policy and set state to collateralized
135
+ instance.getProductStore().updatePolicy(
136
+ applicationNftId,
137
+ applicationInfo,
138
+ COLLATERALIZED());
164
139
 
165
- applicationInfo.premiumPaidAmount = premiumPaidAmount;
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
+ if (premium.premiumAmount > maxPremiumAmount) {
154
+ revert LogPolicyServiceMaxPremiumAmountExceeded(
155
+ applicationNftId,
156
+ maxPremiumAmount,
157
+ premium.premiumAmount);
166
158
  }
167
159
 
168
- // store updated policy info
169
- instance.getInstanceStore().updatePolicy(
170
- applicationNftId,
171
- applicationInfo,
172
- newPolicyState);
160
+ premiumAmount = premium.premiumAmount;
161
+ instance.getProductStore().createPremium(
162
+ applicationNftId,
163
+ premium);
173
164
 
174
- // TODO add calling pool contract if it needs to validate application
165
+ // update referral counter if product has linked distributino component
166
+ {
167
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
168
+ if (productInfo.hasDistribution) {
169
+ _distributionService.processReferral(
170
+ productInfo.distributionNftId,
171
+ applicationInfo.referralId);
172
+ }
173
+ }
174
+
175
+ // link policy to risk and bundle
176
+ NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
177
+ instance.getRiskSet().linkPolicy(productNftId, riskId, applicationNftId);
178
+ instance.getBundleSet().linkPolicy(poolNftId, bundleNftId, applicationNftId);
175
179
 
176
- // TODO: add logging
180
+ // log policy creation before interactions with token and policy holder
181
+ emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
182
+
183
+ // interactions
184
+ // callback to policy holder if applicable
185
+ _policyHolderPolicyActivated(applicationNftId, activateAt);
177
186
  }
178
187
 
179
188
 
189
+ /// @inheritdoc IPolicyService
180
190
  function collectPremium(
181
191
  NftId policyNftId,
182
192
  Timestamp activateAt
183
193
  )
184
194
  external
185
195
  virtual
196
+ restricted()
197
+ nonReentrant()
186
198
  {
187
- // check caller is registered product
188
- (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
199
+ // checks
200
+ (
201
+ IInstance instance,
202
+ NftId productNftId,
203
+ IPolicy.PolicyInfo memory policyInfo
204
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
205
+
206
+ // check policy is in state collateralized
189
207
  InstanceReader instanceReader = instance.getInstanceReader();
190
- StateId stateId = instanceReader.getPolicyState(policyNftId);
208
+ if (instanceReader.getPolicyState(policyNftId) != COLLATERALIZED()) {
209
+ revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
210
+ }
191
211
 
192
- // check policy is in state collateralized or active
193
- if (!(stateId == COLLATERALIZED() || stateId == ACTIVE())) {
194
- revert ErrorPolicyServicePolicyStateNotCollateralizedOrApplied(policyNftId);
212
+ // check if premium has already been collected
213
+ if (instanceReader.getPremiumState(policyNftId) == PAID()) {
214
+ revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
195
215
  }
196
216
 
197
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
217
+ // check funds and allowance of policy holder
218
+ IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
219
+ instanceReader.getTokenHandler(
220
+ productNftId).checkBalanceAndAllowance(
221
+ getRegistry().ownerOf(policyNftId),
222
+ premium.premiumAmount,
223
+ false);
224
+
225
+ // )
226
+ // _checkPremiumBalanceAndAllowance(
227
+ // tokenHandler.TOKEN(),
228
+ // address(tokenHandler),
229
+ // getRegistry().ownerOf(policyNftId),
230
+ // premium.premiumAmount);
231
+
232
+ // effects
233
+ _processSale(
234
+ instanceReader,
235
+ instance.getInstanceStore(),
236
+ productNftId,
237
+ policyInfo.bundleNftId,
238
+ policyInfo.referralId,
239
+ premium);
198
240
 
199
- // check if premium is already collected
200
- if (policyInfo.premiumPaidAmount.gtz()) {
201
- revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
241
+ // optionally activate policy
242
+ if(activateAt.gtz()) {
243
+ policyInfo = PolicyServiceLib.activate(policyNftId, policyInfo, activateAt);
202
244
  }
203
245
 
204
- policyInfo.premiumPaidAmount = _calculateAndCollectPremium(
205
- instance,
206
- policyNftId,
207
- policyInfo);
246
+ instance.getProductStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
247
+ instance.getProductStore().updatePremiumState(policyNftId, PAID());
208
248
 
209
- instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
249
+ // log premium collection before interactions with token
250
+ emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
210
251
 
211
- if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
212
- activate(policyNftId, activateAt);
213
- }
252
+ // interactions
253
+ _transferPremiumAmounts(instanceReader, policyNftId, policyInfo.productNftId, premium);
254
+ }
255
+
256
+
257
+ /// @inheritdoc IPolicyService
258
+ function activate(NftId policyNftId, Timestamp activateAt)
259
+ external
260
+ virtual
261
+ restricted()
262
+ nonReentrant()
263
+ {
264
+ // checks
265
+ (
266
+ IInstance instance,,
267
+ IPolicy.PolicyInfo memory policyInfo
268
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
269
+
270
+ // effects
271
+ policyInfo = PolicyServiceLib.activate(policyNftId, policyInfo, activateAt);
272
+ instance.getProductStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
214
273
 
215
- // TODO: add logging
274
+ // log policy activation before interactions with policy holder
275
+ emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
276
+
277
+ // interactions
278
+ // callback to policy holder if applicable
279
+ _policyHolderPolicyActivated(policyNftId, activateAt);
216
280
  }
217
281
 
218
- function activate(NftId policyNftId, Timestamp activateAt) public override {
219
- // check caller is registered product
220
- (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
221
- InstanceReader instanceReader = instance.getInstanceReader();
282
+ /// @inheritdoc IPolicyService
283
+ function adjustActivation(
284
+ NftId policyNftId,
285
+ Timestamp newActivateAt
286
+ )
287
+ external
288
+ virtual
289
+ restricted()
290
+ nonReentrant()
291
+ {
292
+ // checks
293
+ (
294
+ IInstance instance,,
295
+ IPolicy.PolicyInfo memory policyInfo
296
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
297
+
298
+ if (policyInfo.activatedAt.eqz()) {
299
+ revert ErrorPolicyServicePolicyNotActivated(policyNftId);
300
+ }
222
301
 
223
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
302
+ if (newActivateAt < TimestampLib.current()) {
303
+ revert ErrorPolicyServicePolicyActivationTooEarly(policyNftId, TimestampLib.current(), newActivateAt);
304
+ }
224
305
 
225
- require(
226
- policyInfo.activatedAt.eqz(),
227
- "ERROR:PRS-020:ALREADY_ACTIVATED");
306
+ if (newActivateAt > policyInfo.expiredAt) {
307
+ revert ErrorPolicyServicePolicyActivationTooLate(policyNftId, policyInfo.expiredAt, newActivateAt);
308
+ }
228
309
 
229
- policyInfo.activatedAt = activateAt;
230
- policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
310
+ // effects
311
+ policyInfo.activatedAt = newActivateAt;
312
+ instance.getProductStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
231
313
 
232
- instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, ACTIVE());
314
+ // log policy activation before interactions with policy holder
315
+ emit LogPolicyServicePolicyActivatedUpdated(policyNftId, newActivateAt);
233
316
 
234
- // TODO: add logging
317
+ // interactions
318
+ // callback to policy holder if applicable
319
+ _policyHolderPolicyActivated(policyNftId, newActivateAt);
235
320
  }
236
321
 
237
322
 
323
+ /// @inheritdoc IPolicyService
238
324
  function expire(
239
- NftId policyNftId
325
+ NftId policyNftId,
326
+ Timestamp expireAt
240
327
  )
241
328
  external
242
- override
243
- // solhint-disable-next-line no-empty-blocks
329
+ virtual
330
+ restricted()
331
+ nonReentrant()
332
+ returns (Timestamp expiredAt)
244
333
  {
245
-
334
+ // checks
335
+ (
336
+ IInstance instance,,
337
+ IPolicy.PolicyInfo memory policyInfo
338
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
339
+
340
+ // more checks, effects + interactions
341
+ return _expire(
342
+ instance,
343
+ policyNftId,
344
+ policyInfo,
345
+ expireAt
346
+ );
246
347
  }
247
348
 
349
+
350
+ /// @inheritdoc IPolicyService
351
+ function expirePolicy(
352
+ IInstance instance,
353
+ NftId policyNftId,
354
+ Timestamp expireAt
355
+ )
356
+ external
357
+ virtual
358
+ restricted()
359
+ nonReentrant()
360
+ returns (Timestamp expiredAt)
361
+ {
362
+ // checks
363
+ _checkNftType(policyNftId, POLICY());
364
+ IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(
365
+ policyNftId);
366
+
367
+ // more checks, effects + interactions
368
+ return _expire(
369
+ instance,
370
+ policyNftId,
371
+ policyInfo,
372
+ expireAt
373
+ );
374
+ }
375
+
376
+
377
+ /// @inheritdoc IPolicyService
248
378
  function close(
249
379
  NftId policyNftId
250
380
  )
251
381
  external
252
- override
382
+ virtual
383
+ restricted()
384
+ nonReentrant()
253
385
  {
254
- (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
386
+ // checks
387
+ (
388
+ IInstance instance,
389
+ NftId productNftId,
390
+ IPolicy.PolicyInfo memory policyInfo
391
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
255
392
  InstanceReader instanceReader = instance.getInstanceReader();
256
393
 
257
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
258
-
259
- if (policyInfo.activatedAt.eqz()) {
260
- revert ErrorIPolicyServicePolicyNotActivated(policyNftId);
394
+ // check policy is in a closeable state
395
+ if (!PolicyServiceLib.policyIsCloseable(instanceReader, policyNftId)) {
396
+ revert ErrorPolicyServicePolicyNotCloseable(policyNftId);
261
397
  }
262
398
 
263
- StateId state = instanceReader.getPolicyState(policyNftId);
264
- if (state != ACTIVE()) {
265
- revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
266
- }
399
+ // check that policy has been activated
400
+ RiskId riskId = policyInfo.riskId;
401
+ NftId bundleNftId = policyInfo.bundleNftId;
267
402
 
268
- if (policyInfo.closedAt.gtz()) {
269
- revert ErrorIPolicyServicePolicyAlreadyClosed(policyNftId);
403
+ if (instanceReader.getPremiumState(policyNftId) != PAID()) {
404
+ revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
270
405
  }
271
406
 
272
- // TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
273
- if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
274
- revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
275
- }
276
-
277
- if (policyInfo.openClaimsCount > 0) {
278
- revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
279
- }
280
-
281
- policyInfo.closedAt = TimestampLib.blockTimestamp();
282
-
407
+ // effects
408
+ // release (remaining) collateral that was blocked by policy
283
409
  _poolService.releaseCollateral(
284
410
  instance,
285
411
  policyNftId,
286
412
  policyInfo);
287
413
 
288
- instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
414
+ // TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
415
+
416
+ // update policy state to closed
417
+ policyInfo.closedAt = TimestampLib.current();
418
+ instance.getProductStore().updatePolicy(policyNftId, policyInfo, CLOSED());
419
+
420
+ // unlink policy from risk and bundle
421
+ NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
422
+ instance.getRiskSet().unlinkPolicy(productNftId, riskId, policyNftId);
423
+ instance.getBundleSet().unlinkPolicy(poolNftId, bundleNftId, policyNftId);
424
+
425
+ emit LogPolicyServicePolicyClosed(policyNftId);
289
426
  }
290
427
 
291
428
 
292
- function _calculateAndCollectPremium(
429
+ /// @dev shared functionality for expire() and policyExpire().
430
+ function _expire(
293
431
  IInstance instance,
294
- NftId applicationNftId,
295
- IPolicy.PolicyInfo memory applicationInfo
432
+ NftId policyNftId,
433
+ IPolicy.PolicyInfo memory policyInfo,
434
+ Timestamp expireAt
296
435
  )
297
436
  internal
298
- virtual
299
- returns (
300
- Amount premiumPaidAmount
301
- )
437
+ returns (Timestamp)
302
438
  {
303
- NftId productNftId = applicationInfo.productNftId;
439
+ policyInfo = PolicyServiceLib.expire(
440
+ instance.getInstanceReader(),
441
+ policyNftId,
442
+ policyInfo,
443
+ expireAt);
304
444
 
305
- // calculate premium details
306
- IPolicy.Premium memory premium = _pricingService.calculatePremium(
307
- productNftId,
308
- applicationInfo.riskId,
309
- applicationInfo.sumInsuredAmount,
310
- applicationInfo.lifetime,
311
- applicationInfo.applicationData,
312
- applicationInfo.bundleNftId,
313
- applicationInfo.referralId);
445
+ instance.getProductStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
314
446
 
447
+ emit LogPolicyServicePolicyExpirationUpdated(policyNftId, policyInfo.expiredAt);
315
448
 
316
- // update financials and transfer premium tokens
317
- premiumPaidAmount = _processAndCollect(
318
- instance,
319
- productNftId,
320
- applicationNftId,
321
- applicationInfo.premiumAmount,
322
- applicationInfo.bundleNftId,
323
- applicationInfo.referralId,
324
- premium);
449
+ // interactions
450
+ // callback to policy holder if applicable
451
+ _policyHolderPolicyExpired(policyNftId, policyInfo.expiredAt);
452
+ return policyInfo.expiredAt;
325
453
  }
326
454
 
327
455
 
328
- function _processAndCollect(
329
- IInstance instance,
456
+ /// @dev update counters by calling the involved services
457
+ function _processSale(
458
+ InstanceReader instanceReader,
459
+ InstanceStore instanceStore,
330
460
  NftId productNftId,
331
- NftId policyNftId,
332
- Amount premiumExpectedAmount,
333
461
  NftId bundleNftId,
334
462
  ReferralId referralId,
335
- IPolicy.Premium memory premium
463
+ IPolicy.PremiumInfo memory premium
336
464
  )
337
465
  internal
338
466
  virtual
339
- returns (Amount premiumPaidAmount)
340
467
  {
341
- InstanceReader instanceReader = instance.getInstanceReader();
342
- TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
343
- address policyHolder = getRegistry().ownerOf(policyNftId);
344
- premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
345
-
346
- _checkPremiumBalanceAndAllowance(
347
- tokenHandler,
348
- policyHolder,
349
- premiumExpectedAmount,
350
- premiumPaidAmount);
351
-
352
- _processSaleAndTransferFunds(
468
+ (NftId distributionNftId,,,) = _getDistributionNftAndWallets(
353
469
  instanceReader,
354
- instance.getInstanceStore(),
355
- tokenHandler,
356
- policyHolder,
357
- productNftId,
358
- bundleNftId,
359
- referralId,
360
- premium);
361
- }
362
-
470
+ productNftId);
363
471
 
364
- function _checkPremiumBalanceAndAllowance(
365
- TokenHandler tokenHandler,
366
- address policyHolder,
367
- Amount premiumExpectedAmount,
368
- Amount premiumPaidAmount
369
- )
370
- internal
371
- virtual
372
- view
373
- {
374
- // TODO decide how to handle this properly
375
- // not clear if this is the best way to handle this
376
- if (premiumExpectedAmount < premiumPaidAmount) {
377
- revert ErrorPolicyServicePremiumHigherThanExpected(premiumExpectedAmount, premiumPaidAmount);
378
- }
472
+ // update product fees, distribution and pool fees
473
+ _accountingService.increaseProductFees(
474
+ instanceStore,
475
+ productNftId,
476
+ premium.productFeeVarAmount + premium.productFeeFixAmount);
379
477
 
380
- uint256 premiumAmount = premiumPaidAmount.toInt();
381
- uint256 balance = tokenHandler.getToken().balanceOf(policyHolder);
382
- uint256 allowance = tokenHandler.getToken().allowance(policyHolder, address(tokenHandler));
383
-
384
- if (balance < premiumAmount) {
385
- revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premiumAmount, balance);
478
+ // update distribution fees and distributor commission and pool fees
479
+ if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
480
+ _distributionService.processSale(
481
+ distributionNftId,
482
+ referralId,
483
+ premium);
386
484
  }
387
485
 
388
- if (allowance < premiumAmount) {
389
- revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, address(tokenHandler), premiumAmount, allowance);
390
- }
486
+ // update pool and bundle fees
487
+ _poolService.processSale(
488
+ bundleNftId,
489
+ premium);
391
490
  }
392
491
 
393
492
 
394
- function _processSaleAndTransferFunds(
493
+ /// @dev transfer the premium to the wallets the premium is distributed to
494
+ function _transferPremiumAmounts(
395
495
  InstanceReader instanceReader,
396
- InstanceStore instanceStore,
397
- TokenHandler tokenHandler,
398
- address policyHolder,
496
+ NftId policyNftId,
399
497
  NftId productNftId,
400
- NftId bundleNftId,
401
- ReferralId referralId,
402
- IPolicy.Premium memory premium
498
+ IPolicy.PremiumInfo memory premium
403
499
  )
404
500
  internal
405
501
  virtual
406
502
  {
503
+ address policyHolder = getRegistry().ownerOf(policyNftId);
504
+
407
505
  (
408
- NftId distributionNftId,
506
+ ,
409
507
  address distributionWallet,
410
508
  address poolWallet,
411
509
  address productWallet
@@ -413,44 +511,78 @@ contract PolicyService is
413
511
  instanceReader,
414
512
  productNftId);
415
513
 
416
- // update product fees, distribution and pool fees
417
- _componentService.increaseProductFees(
418
- instanceStore,
419
- productNftId,
420
- AmountLib.toAmount(premium.productFeeVarAmount + premium.productFeeFixAmount));
514
+ // step 1: collect premium amount from policy holder
515
+ TokenHandler tokenHandler = instanceReader.getTokenHandler(productNftId);
516
+ tokenHandler.pullToken(policyHolder, premium.premiumAmount);
421
517
 
422
- // update distribution fees and distributor commission and pool fees
423
- _distributionService.processSale(
424
- distributionNftId,
425
- referralId,
426
- premium);
518
+ // step 2: push distribution fee to distribution wallet
519
+ if (premium.distributionFeeAndCommissionAmount.gtz()) {
520
+ tokenHandler.pushToken(distributionWallet, premium.distributionFeeAndCommissionAmount);
521
+ }
427
522
 
428
- // update pool and bundle fees
429
- _poolService.processSale(
430
- bundleNftId,
431
- premium);
523
+ // step 3: push pool fee, bundle fee and pool premium to pool wallet
524
+ if (premium.poolPremiumAndFeeAmount.gtz()) {
525
+ tokenHandler.pushToken(poolWallet, premium.poolPremiumAndFeeAmount);
526
+ }
527
+ }
528
+ function _policyHolderPolicyActivated(
529
+ NftId policyNftId,
530
+ Timestamp activateAt
531
+ )
532
+ internal
533
+ virtual
534
+ {
535
+ // immediately return if policy is not activated
536
+ if (activateAt.eqz()) {
537
+ return;
538
+ }
539
+
540
+ // get policy holder address
541
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
432
542
 
433
- // transfer premium amounts to target wallets
434
- tokenHandler.transfer(policyHolder, productWallet, premium.productFeeAmount);
435
- tokenHandler.transfer(policyHolder, distributionWallet, premium.distributionFeeAndCommissionAmount);
436
- tokenHandler.transfer(policyHolder, poolWallet, premium.poolPremiumAndFeeAmount);
543
+ // execute callback if policy holder implements IPolicyHolder
544
+ if (address(policyHolder) != address(0)) {
545
+ policyHolder.policyActivated(policyNftId, activateAt);
546
+ }
437
547
  }
438
548
 
439
549
 
440
- function _getTokenHandlerAndProductWallet(
441
- InstanceReader instanceReader,
442
- NftId productNftId
550
+ function _policyHolderPolicyExpired(
551
+ NftId policyNftId,
552
+ Timestamp expiredAt
443
553
  )
444
- internal
554
+ internal
445
555
  virtual
556
+ {
557
+ // immediately return if policy is not activated
558
+ if (expiredAt.eqz()) {
559
+ return;
560
+ }
561
+
562
+ // get policy holder address
563
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
564
+
565
+ // execute callback if policy holder implements IPolicyHolder
566
+ if (address(policyHolder) != address(0)) {
567
+ policyHolder.policyExpired(policyNftId, expiredAt);
568
+ }
569
+ }
570
+
571
+
572
+ function _getPolicyHolder(NftId policyNftId)
573
+ internal
446
574
  view
447
- returns (
448
- TokenHandler tokenHandler
449
- )
575
+ returns (IPolicyHolder policyHolder)
450
576
  {
451
- tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
577
+ address policyHolderAddress = getRegistry().ownerOf(policyNftId);
578
+ policyHolder = IPolicyHolder(policyHolderAddress);
579
+
580
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
581
+ policyHolder = IPolicyHolder(address(0));
582
+ }
452
583
  }
453
584
 
585
+
454
586
  function _getDistributionNftAndWallets(
455
587
  InstanceReader instanceReader,
456
588
  NftId productNftId
@@ -465,9 +597,49 @@ contract PolicyService is
465
597
  )
466
598
  {
467
599
  IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
468
- distributionNftId = productInfo.distributionNftId;
469
- distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
470
- poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
471
- productWallet = instanceReader.getComponentInfo(productNftId).wallet;
600
+ productWallet = instanceReader.getComponentInfo(productNftId).tokenHandler.getWallet();
601
+ poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).tokenHandler.getWallet();
602
+
603
+ if (productInfo.hasDistribution) {
604
+ distributionNftId = productInfo.distributionNftId;
605
+ distributionWallet = instanceReader.getComponentInfo(distributionNftId).tokenHandler.getWallet();
606
+ }
607
+ }
608
+
609
+
610
+ function _getAndVerifyCallerForPolicy(NftId policyNftId)
611
+ internal
612
+ virtual
613
+ view
614
+ returns (
615
+ IInstance instance,
616
+ NftId productNftId,
617
+ IPolicy.PolicyInfo memory policyInfo
618
+ )
619
+ {
620
+ (
621
+ IRegistry.ObjectInfo memory productInfo,
622
+ address instanceAddress
623
+ ) = ContractLib.getAndVerifyComponent(
624
+ getRegistry(),
625
+ msg.sender, // caller contract
626
+ PRODUCT(), // caller must be product
627
+ true); // only active caller
628
+
629
+ productNftId = productInfo.nftId; // calling product nft id
630
+ instance = IInstance(instanceAddress);
631
+ policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
632
+
633
+ if (policyInfo.productNftId != productNftId) {
634
+ revert ErrorPolicyServicePolicyProductMismatch(
635
+ policyNftId,
636
+ productNftId,
637
+ policyInfo.productNftId);
638
+ }
639
+ }
640
+
641
+
642
+ function _getDomain() internal pure override returns(ObjectType) {
643
+ return POLICY();
472
644
  }
473
645
  }