@etherisc/gif-next 0.0.2-a380f15 → 0.0.2-a3df2ff-539

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 (657) hide show
  1. package/README.md +489 -9
  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 +790 -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 +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +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 +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/access → authorization}/IAccess.sol/IAccess.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -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 +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +939 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +930 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +838 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -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 +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 +805 -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 +805 -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 +1429 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  72. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +722 -449
  74. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1092 -0
  76. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  77. package/artifacts/contracts/instance/Instance.sol/Instance.json +800 -530
  78. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2284 -0
  80. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
  82. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2519 -0
  84. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1338 -0
  86. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +772 -0
  88. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3039 -0
  90. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  92. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  93. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  94. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  96. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  98. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  100. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  102. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  103. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  104. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  105. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  106. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  107. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  108. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  109. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  110. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  111. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  112. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  113. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  114. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  115. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  116. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  117. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  118. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  120. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  122. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  124. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  126. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  128. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  129. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  130. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  131. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  132. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  134. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  136. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  138. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  140. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  141. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  142. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  144. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  145. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +895 -0
  146. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  147. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  148. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  149. package/artifacts/contracts/pool/Pool.sol/Pool.json +1015 -0
  150. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  151. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  152. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  153. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  154. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  156. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  157. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  158. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  160. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  161. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  162. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  163. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  164. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  165. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  166. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  167. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  168. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +804 -0
  170. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  171. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  172. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  173. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  174. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  175. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  176. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  177. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1006 -0
  178. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  179. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +665 -0
  180. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  181. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  182. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  183. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  184. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  186. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  187. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  188. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  189. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  190. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  191. package/artifacts/contracts/product/Product.sol/Product.json +1107 -0
  192. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  193. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  194. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  195. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  196. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  197. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  198. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  199. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1055 -113
  200. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  201. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1072 -0
  202. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/component/IComponent.sol/IInstanceLinked.json → registry/IRelease.sol/IRelease.json} +6 -6
  204. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  205. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  206. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/Registry.sol/Registry.json +1543 -176
  208. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  209. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  210. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  211. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  212. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  213. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1298 -0
  214. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  215. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +773 -0
  216. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  217. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  218. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  219. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  220. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  221. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  222. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  223. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  224. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  225. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +721 -0
  226. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  227. package/artifacts/contracts/shared/Component.sol/Component.json +695 -0
  228. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  230. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  234. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  235. package/artifacts/contracts/{registry/IRegistry.sol/IOwnable.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  236. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/ContractLib.sol/ITargetHelper.json} +4 -9
  238. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  239. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  240. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  241. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +620 -0
  242. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  243. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  244. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  245. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +697 -0
  246. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  247. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +146 -0
  248. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  249. package/artifacts/contracts/{registry/IRegistry.sol/IRegisterable.json → shared/INftOwnable.sol/INftOwnable.json} +72 -72
  250. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  251. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  252. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  253. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → shared/IRegisterable.sol/IRegisterable.json} +179 -158
  254. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  255. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +5 -19
  256. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  257. package/artifacts/contracts/shared/IService.sol/IService.json +428 -0
  258. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  259. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  260. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  261. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  262. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  263. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  264. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  265. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  266. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  267. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +228 -0
  268. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  269. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  270. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  271. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +397 -0
  272. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  273. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  274. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  275. package/artifacts/contracts/shared/Service.sol/Service.json +482 -0
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  278. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  279. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  280. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  281. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  282. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  283. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2747 -0
  284. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  285. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  286. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  287. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  288. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  289. package/artifacts/contracts/staking/Staking.sol/Staking.json +3175 -0
  290. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  292. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +847 -0
  294. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  296. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  298. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  299. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  300. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  301. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  302. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  303. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  304. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  305. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  306. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  307. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  308. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  310. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  312. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  314. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  316. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  318. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  320. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  321. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  322. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  323. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  324. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  326. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  327. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  328. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  330. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  332. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  334. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  336. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  338. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  340. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  342. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  344. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  346. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  348. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  350. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  352. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  354. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  355. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  356. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  357. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  358. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  360. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  361. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  362. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  363. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  364. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  365. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  366. package/contracts/accounting/AccountingService.sol +274 -0
  367. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  368. package/contracts/accounting/IAccountingService.sol +47 -0
  369. package/contracts/authorization/AccessAdmin.sol +780 -0
  370. package/contracts/authorization/AccessAdminLib.sol +396 -0
  371. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  372. package/contracts/authorization/Authorization.sol +169 -0
  373. package/contracts/authorization/IAccess.sol +67 -0
  374. package/contracts/authorization/IAccessAdmin.sol +144 -0
  375. package/contracts/authorization/IAuthorization.sol +26 -0
  376. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  377. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  378. package/contracts/distribution/BasicDistribution.sol +140 -0
  379. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  380. package/contracts/distribution/Distribution.sol +245 -0
  381. package/contracts/distribution/DistributionService.sol +448 -0
  382. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  383. package/contracts/distribution/IDistributionComponent.sol +45 -0
  384. package/contracts/distribution/IDistributionService.sol +115 -0
  385. package/contracts/examples/fire/DamageLevel.sol +59 -0
  386. package/contracts/examples/fire/FirePool.sol +86 -0
  387. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  388. package/contracts/examples/fire/FireProduct.sol +433 -0
  389. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  390. package/contracts/examples/fire/FireUSD.sol +26 -0
  391. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  392. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  393. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  394. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  395. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  396. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  397. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  398. package/contracts/instance/BaseStore.sol +93 -0
  399. package/contracts/instance/BundleSet.sol +130 -0
  400. package/contracts/instance/IBaseStore.sol +37 -0
  401. package/contracts/instance/IInstance.sol +151 -15
  402. package/contracts/instance/IInstanceService.sol +119 -0
  403. package/contracts/instance/Instance.sol +332 -45
  404. package/contracts/instance/InstanceAdmin.sol +379 -0
  405. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  406. package/contracts/instance/InstanceReader.sol +612 -0
  407. package/contracts/instance/InstanceService.sol +514 -0
  408. package/contracts/instance/InstanceServiceManager.sol +39 -0
  409. package/contracts/instance/InstanceStore.sol +323 -0
  410. package/contracts/instance/ProductStore.sol +290 -0
  411. package/contracts/instance/RiskSet.sol +126 -0
  412. package/contracts/instance/TargetNames.sol +10 -0
  413. package/contracts/instance/base/BalanceStore.sol +121 -0
  414. package/contracts/instance/base/Cloneable.sol +28 -0
  415. package/contracts/instance/base/ObjectCounter.sol +20 -0
  416. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  417. package/contracts/instance/base/ObjectSet.sol +77 -0
  418. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  419. package/contracts/instance/module/IBundle.sol +21 -0
  420. package/contracts/instance/module/IComponents.sol +60 -0
  421. package/contracts/instance/module/IDistribution.sol +54 -0
  422. package/contracts/instance/module/IPolicy.sol +105 -0
  423. package/contracts/instance/module/IRisk.sol +16 -0
  424. package/contracts/mock/Dip.sol +26 -0
  425. package/contracts/oracle/BasicOracle.sol +44 -0
  426. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  427. package/contracts/oracle/IOracle.sol +41 -0
  428. package/contracts/oracle/IOracleComponent.sol +33 -0
  429. package/contracts/oracle/IOracleService.sol +66 -0
  430. package/contracts/oracle/Oracle.sol +152 -0
  431. package/contracts/oracle/OracleService.sol +310 -0
  432. package/contracts/oracle/OracleServiceManager.sol +39 -0
  433. package/contracts/pool/BasicPool.sol +161 -0
  434. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  435. package/contracts/pool/BundleService.sol +386 -0
  436. package/contracts/pool/BundleServiceManager.sol +39 -0
  437. package/contracts/pool/IBundleService.sol +116 -0
  438. package/contracts/pool/IPoolComponent.sol +62 -0
  439. package/contracts/pool/IPoolService.sol +170 -0
  440. package/contracts/pool/Pool.sol +331 -0
  441. package/contracts/pool/PoolLib.sol +341 -0
  442. package/contracts/pool/PoolService.sol +614 -0
  443. package/contracts/pool/PoolServiceManager.sol +39 -0
  444. package/contracts/product/ApplicationService.sol +327 -0
  445. package/contracts/product/ApplicationServiceManager.sol +38 -0
  446. package/contracts/product/BasicProduct.sol +48 -0
  447. package/contracts/product/BasicProductAuthorization.sol +63 -0
  448. package/contracts/product/ClaimService.sol +626 -0
  449. package/contracts/product/ClaimServiceManager.sol +38 -0
  450. package/contracts/product/IApplicationService.sol +88 -0
  451. package/contracts/product/IClaimService.sol +136 -0
  452. package/contracts/product/IPolicyService.sol +102 -0
  453. package/contracts/product/IPricingService.sol +40 -0
  454. package/contracts/product/IProductComponent.sol +62 -0
  455. package/contracts/product/IRiskService.sol +48 -0
  456. package/contracts/product/PolicyService.sol +645 -0
  457. package/contracts/product/PolicyServiceLib.sol +139 -0
  458. package/contracts/product/PolicyServiceManager.sol +39 -0
  459. package/contracts/product/PricingService.sol +306 -0
  460. package/contracts/product/PricingServiceManager.sol +39 -0
  461. package/contracts/product/Product.sol +491 -0
  462. package/contracts/product/RiskService.sol +189 -0
  463. package/contracts/product/RiskServiceManager.sol +39 -0
  464. package/contracts/registry/ChainNft.sol +176 -100
  465. package/contracts/registry/IRegistry.sol +149 -47
  466. package/contracts/registry/IRegistryService.sol +62 -0
  467. package/contracts/registry/IRelease.sol +29 -0
  468. package/contracts/registry/ITransferInterceptor.sol +6 -0
  469. package/contracts/registry/Registry.sol +671 -117
  470. package/contracts/registry/RegistryAdmin.sol +191 -0
  471. package/contracts/registry/RegistryAuthorization.sol +336 -0
  472. package/contracts/registry/RegistryService.sol +241 -0
  473. package/contracts/registry/RegistryServiceManager.sol +53 -0
  474. package/contracts/registry/ReleaseAdmin.sol +195 -0
  475. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  476. package/contracts/registry/ReleaseRegistry.sol +525 -0
  477. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  478. package/contracts/registry/TokenRegistry.sol +317 -0
  479. package/contracts/shared/Component.sol +210 -0
  480. package/contracts/shared/ComponentService.sol +691 -0
  481. package/contracts/shared/ComponentServiceManager.sol +38 -0
  482. package/contracts/shared/ContractLib.sol +312 -0
  483. package/contracts/shared/IComponent.sol +58 -0
  484. package/contracts/shared/IComponentService.sol +111 -0
  485. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  486. package/contracts/shared/ILifecycle.sol +31 -0
  487. package/contracts/shared/INftOwnable.sol +27 -0
  488. package/contracts/shared/IPolicyHolder.sol +35 -0
  489. package/contracts/shared/IRegisterable.sol +36 -0
  490. package/contracts/shared/IRegistryLinked.sol +11 -0
  491. package/contracts/shared/IService.sol +23 -0
  492. package/contracts/shared/InitializableERC165.sol +35 -0
  493. package/contracts/shared/InstanceLinkedComponent.sol +192 -0
  494. package/contracts/shared/Lifecycle.sol +88 -0
  495. package/contracts/shared/NftIdSet.sol +65 -0
  496. package/contracts/shared/NftOwnable.sol +129 -0
  497. package/contracts/shared/PolicyHolder.sol +63 -0
  498. package/contracts/shared/Registerable.sol +106 -0
  499. package/contracts/shared/RegistryLinked.sol +38 -0
  500. package/contracts/shared/Service.sol +67 -0
  501. package/contracts/shared/TokenHandler.sol +342 -0
  502. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  503. package/contracts/staking/IStaking.sol +367 -0
  504. package/contracts/staking/IStakingService.sol +127 -0
  505. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  506. package/contracts/staking/Staking.sol +797 -0
  507. package/contracts/staking/StakingLib.sol +195 -0
  508. package/contracts/staking/StakingManager.sol +53 -0
  509. package/contracts/staking/StakingReader.sol +171 -0
  510. package/contracts/staking/StakingService.sol +321 -0
  511. package/contracts/staking/StakingServiceManager.sol +46 -0
  512. package/contracts/staking/StakingStore.sol +1368 -0
  513. package/contracts/staking/TargetHandler.sol +132 -0
  514. package/contracts/staking/TargetManagerLib.sol +234 -0
  515. package/contracts/type/AddressSet.sol +58 -0
  516. package/contracts/type/Amount.sol +154 -0
  517. package/contracts/type/Blocknumber.sol +142 -0
  518. package/contracts/type/ChainId.sol +101 -0
  519. package/contracts/type/ClaimId.sol +80 -0
  520. package/contracts/type/DistributorType.sol +55 -0
  521. package/contracts/type/Fee.sol +66 -0
  522. package/contracts/type/Key32.sol +50 -0
  523. package/contracts/type/Key32Set.sol +62 -0
  524. package/contracts/type/NftId.sol +85 -0
  525. package/contracts/type/NftIdSet.sol +62 -0
  526. package/contracts/type/ObjectType.sol +307 -0
  527. package/contracts/type/PayoutId.sol +82 -0
  528. package/contracts/type/Referral.sol +90 -0
  529. package/contracts/type/RequestId.sol +75 -0
  530. package/contracts/type/RiskId.sol +75 -0
  531. package/contracts/type/RoleId.sol +180 -0
  532. package/contracts/type/Seconds.sol +120 -0
  533. package/contracts/type/Selector.sol +107 -0
  534. package/contracts/type/StateId.sol +149 -0
  535. package/contracts/type/String.sol +65 -0
  536. package/contracts/type/Timestamp.sol +143 -0
  537. package/contracts/type/UFixed.sol +263 -0
  538. package/contracts/type/Version.sol +159 -0
  539. package/contracts/upgradeability/IVersionable.sol +56 -0
  540. package/contracts/upgradeability/ProxyManager.sol +246 -0
  541. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  542. package/contracts/upgradeability/Versionable.sol +62 -0
  543. package/package.json +26 -7
  544. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  545. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  546. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  547. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  548. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  549. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  550. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  551. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  552. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  553. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  554. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  555. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  556. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  557. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  558. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  559. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  560. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  562. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  564. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  566. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  568. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  570. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  572. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  574. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  575. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  576. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  577. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  578. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  579. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  580. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  581. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  582. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  583. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  584. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  585. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  586. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  587. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  588. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  589. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  591. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  592. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  593. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  594. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  595. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  596. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  597. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  598. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  599. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  600. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  601. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  602. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  603. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  604. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  605. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  606. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  607. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  608. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  609. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  610. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  611. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  612. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  613. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  614. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  615. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  616. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  617. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  618. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  619. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  620. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  621. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  622. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  623. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  624. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  625. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  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/NftId.sol/NftIdLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  630. package/contracts/components/Component.sol +0 -62
  631. package/contracts/components/IPool.sol +0 -9
  632. package/contracts/components/IProduct.sol +0 -12
  633. package/contracts/components/Pool.sol +0 -29
  634. package/contracts/components/Product.sol +0 -66
  635. package/contracts/experiment/errors/Require.sol +0 -33
  636. package/contracts/experiment/errors/Revert.sol +0 -39
  637. package/contracts/experiment/inheritance/A.sol +0 -56
  638. package/contracts/experiment/inheritance/B.sol +0 -23
  639. package/contracts/experiment/inheritance/C.sol +0 -28
  640. package/contracts/experiment/inheritance/IA.sol +0 -18
  641. package/contracts/experiment/inheritance/IB.sol +0 -9
  642. package/contracts/experiment/inheritance/IC.sol +0 -11
  643. package/contracts/experiment/types/TypeA.sol +0 -42
  644. package/contracts/experiment/types/TypeB.sol +0 -24
  645. package/contracts/instance/access/Access.sol +0 -218
  646. package/contracts/instance/access/IAccess.sol +0 -83
  647. package/contracts/instance/component/ComponentModule.sol +0 -248
  648. package/contracts/instance/component/IComponent.sol +0 -95
  649. package/contracts/instance/policy/IPolicy.sol +0 -66
  650. package/contracts/instance/policy/PolicyModule.sol +0 -107
  651. package/contracts/instance/pool/IPoolModule.sol +0 -41
  652. package/contracts/instance/pool/PoolModule.sol +0 -86
  653. package/contracts/instance/product/IProductService.sol +0 -46
  654. package/contracts/instance/product/ProductService.sol +0 -108
  655. package/contracts/registry/IChainNft.sol +0 -18
  656. package/contracts/types/ChainId.sol +0 -30
  657. package/contracts/types/NftId.sol +0 -35
@@ -0,0 +1,626 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IClaimService} from "./IClaimService.sol";
5
+ import {IInstance} from "../instance/IInstance.sol";
6
+ import {IPolicy} from "../instance/module/IPolicy.sol";
7
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
8
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
9
+ import {IPolicyService} from "../product/IPolicyService.sol";
10
+ import {IPoolService} from "../pool/IPoolService.sol";
11
+ import {IRegistry} from "../registry/IRegistry.sol";
12
+
13
+ import {Amount, AmountLib} from "../type/Amount.sol";
14
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
15
+ import {ContractLib} from "../shared/ContractLib.sol";
16
+ import {InstanceReader} from "../instance/InstanceReader.sol";
17
+ import {InstanceStore} from "../instance/InstanceStore.sol";
18
+ import {NftId} from "../type/NftId.sol";
19
+ import {ObjectType, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
20
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
21
+ import {ProductStore} from "../instance/ProductStore.sol";
22
+ import {Service} from "../shared/Service.sol";
23
+ import {StateId} from "../type/StateId.sol";
24
+ import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CANCELLED, CONFIRMED, CLOSED, EXPECTED, PAID} from "../type/StateId.sol";
25
+ import {TimestampLib} from "../type/Timestamp.sol";
26
+
27
+
28
+ contract ClaimService is
29
+ Service,
30
+ IClaimService
31
+ {
32
+
33
+ IPolicyService internal _policyService;
34
+ IPoolService internal _poolService;
35
+
36
+ function _initialize(
37
+ address owner,
38
+ bytes memory data
39
+ )
40
+ internal
41
+ virtual override
42
+ initializer()
43
+ {
44
+ (
45
+ address authority,
46
+ address registry
47
+ ) = abi.decode(data, (address, address));
48
+
49
+ __Service_init(authority, registry, owner);
50
+
51
+ _policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
52
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
53
+
54
+ _registerInterface(type(IClaimService).interfaceId);
55
+ }
56
+
57
+ function submit(
58
+ NftId policyNftId,
59
+ Amount claimAmount,
60
+ bytes memory claimData // claim submission data
61
+ )
62
+ external
63
+ virtual
64
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
65
+ restricted()
66
+ returns (ClaimId claimId)
67
+ {
68
+ // checks
69
+ (
70
+ ,,
71
+ IInstance.InstanceContracts memory instanceContracts,
72
+ IPolicy.PolicyInfo memory policyInfo
73
+ ) = _verifyCallerWithPolicy(policyNftId);
74
+
75
+ // check policy is in its active period
76
+ if(policyInfo.activatedAt.eqz() || TimestampLib.current() >= policyInfo.expiredAt) {
77
+ revert ErrorClaimServicePolicyNotOpen(policyNftId);
78
+ }
79
+
80
+ _checkClaimAmount(policyNftId, policyInfo, claimAmount);
81
+
82
+ // effects
83
+ // create new claim
84
+ claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
85
+ instanceContracts.productStore.createClaim(
86
+ policyNftId,
87
+ claimId,
88
+ IPolicy.ClaimInfo({
89
+ claimAmount: claimAmount,
90
+ paidAmount: AmountLib.zero(),
91
+ payoutsCount: 0,
92
+ openPayoutsCount: 0,
93
+ submissionData: claimData,
94
+ processData: "",
95
+ closedAt: TimestampLib.zero()}));
96
+
97
+ // update and save policy info with instance
98
+ // policy claim amount is only updated when claim is confirmed
99
+ policyInfo.claimsCount += 1;
100
+ policyInfo.openClaimsCount += 1;
101
+ instanceContracts.productStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
102
+
103
+ emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
104
+ }
105
+
106
+
107
+ function confirm(
108
+ NftId policyNftId,
109
+ ClaimId claimId,
110
+ Amount confirmedAmount,
111
+ bytes memory data // claim processing data
112
+ )
113
+ external
114
+ virtual
115
+ restricted()
116
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
117
+ {
118
+ // checks
119
+ _checkNftType(policyNftId, POLICY());
120
+
121
+ (
122
+ NftId productNftId,
123
+ IInstance instance,
124
+ IInstance.InstanceContracts memory instanceContracts,
125
+ IPolicy.PolicyInfo memory policyInfo
126
+ ) = _verifyCallerWithPolicy(policyNftId);
127
+
128
+ _checkClaimAmount(policyNftId, policyInfo, confirmedAmount);
129
+
130
+ // effects
131
+ // check/update claim info
132
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceContracts.instanceReader, policyNftId, claimId, SUBMITTED());
133
+ claimInfo.claimAmount = confirmedAmount;
134
+ claimInfo.processData = data;
135
+ instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
136
+
137
+ // update and save policy info with instance
138
+ policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
139
+ instanceContracts.productStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
140
+
141
+ // should policy still be active it needs to become expired
142
+ if (policyInfo.claimAmount >= policyInfo.sumInsuredAmount) {
143
+ _policyService.expirePolicy(instance, policyNftId, TimestampLib.current());
144
+ }
145
+
146
+ emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
147
+
148
+ // interactions
149
+ // callback to pool if applicable
150
+ _processConfirmedClaimByPool(instanceContracts.instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
151
+
152
+ // callback to policy holder if applicable
153
+ _policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
154
+ }
155
+
156
+
157
+ function decline(
158
+ NftId policyNftId,
159
+ ClaimId claimId,
160
+ bytes memory data // claim processing data
161
+ )
162
+ external
163
+ virtual
164
+ restricted()
165
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
166
+ {
167
+ _checkNftType(policyNftId, POLICY());
168
+
169
+ (
170
+ ,,
171
+ IInstance.InstanceContracts memory instanceContracts,
172
+ IPolicy.PolicyInfo memory policyInfo
173
+ ) = _verifyCallerWithPolicy(policyNftId);
174
+
175
+ // check/update claim info
176
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceContracts.instanceReader, policyNftId, claimId, SUBMITTED());
177
+ claimInfo.processData = data;
178
+ claimInfo.closedAt = TimestampLib.current();
179
+ instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, DECLINED());
180
+
181
+ // update and save policy info with instance
182
+ policyInfo.openClaimsCount -= 1;
183
+ instanceContracts.productStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
184
+
185
+ emit LogClaimServiceClaimDeclined(policyNftId, claimId);
186
+ }
187
+
188
+
189
+ function revoke(
190
+ NftId policyNftId,
191
+ ClaimId claimId
192
+ )
193
+ external
194
+ virtual
195
+ restricted()
196
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
197
+ {
198
+ (
199
+ ,,
200
+ IInstance.InstanceContracts memory instanceContracts,
201
+ IPolicy.PolicyInfo memory policyInfo
202
+ ) = _verifyCallerWithPolicy(policyNftId);
203
+
204
+ // check/update claim info
205
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceContracts.instanceReader, policyNftId, claimId, SUBMITTED());
206
+ claimInfo.closedAt = TimestampLib.current();
207
+ instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, REVOKED());
208
+
209
+ // update and save policy info with instance
210
+ policyInfo.openClaimsCount -= 1;
211
+ instanceContracts.productStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
212
+
213
+ emit LogClaimServiceClaimRevoked(policyNftId, claimId);
214
+ }
215
+
216
+
217
+ function cancelConfirmedClaim(
218
+ NftId policyNftId,
219
+ ClaimId claimId
220
+ )
221
+ external
222
+ virtual
223
+ restricted()
224
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
225
+ {
226
+ _checkNftType(policyNftId, POLICY());
227
+
228
+ (
229
+ ,,
230
+ IInstance.InstanceContracts memory instanceContracts,
231
+ ) = _verifyCallerWithPolicy(policyNftId);
232
+
233
+ // check/update claim info
234
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceContracts.instanceReader, policyNftId, claimId, CONFIRMED());
235
+
236
+ // check claim has no open payouts
237
+ if(claimInfo.openPayoutsCount > 0) {
238
+ revert ErrorClaimServiceClaimWithOpenPayouts(
239
+ policyNftId,
240
+ claimId,
241
+ claimInfo.openPayoutsCount);
242
+ }
243
+
244
+ claimInfo.closedAt = TimestampLib.current();
245
+ instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, CANCELLED());
246
+
247
+ emit LogClaimServiceClaimCancelled(policyNftId, claimId);
248
+ }
249
+
250
+
251
+ function createPayoutForBeneficiary(
252
+ NftId policyNftId,
253
+ ClaimId claimId,
254
+ Amount amount,
255
+ address beneficiary,
256
+ bytes memory data
257
+ )
258
+ external
259
+ virtual
260
+ restricted()
261
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
262
+ returns (PayoutId payoutId)
263
+ {
264
+ if (beneficiary == address(0)) {
265
+ revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
266
+ }
267
+
268
+ return _createPayout(
269
+ policyNftId,
270
+ claimId,
271
+ amount,
272
+ beneficiary,
273
+ data);
274
+ }
275
+
276
+
277
+ function createPayout(
278
+ NftId policyNftId,
279
+ ClaimId claimId,
280
+ Amount amount,
281
+ bytes memory data
282
+ )
283
+ external
284
+ virtual
285
+ restricted()
286
+ // nonReentrant() // prevents creating a reinsurance payout in a single tx
287
+ returns (PayoutId payoutId)
288
+ {
289
+ _checkNftType(policyNftId, POLICY());
290
+
291
+ return _createPayout(
292
+ policyNftId,
293
+ claimId,
294
+ amount,
295
+ address(0), // defaults to owner of policy nft
296
+ data);
297
+ }
298
+
299
+
300
+ function processPayout(
301
+ NftId policyNftId,
302
+ PayoutId payoutId
303
+ )
304
+ external
305
+ virtual
306
+ restricted()
307
+ // nonReentrant() // prevents creating a reinsurance payout in a single tx
308
+ returns (Amount netPayoutAmount, Amount processingFeeAmount)
309
+ {
310
+ // checks
311
+ (
312
+ ,,
313
+ IInstance.InstanceContracts memory instanceContracts,
314
+ IPolicy.PolicyInfo memory policyInfo
315
+ ) = _verifyCallerWithPolicy(policyNftId);
316
+
317
+ IPolicy.ClaimInfo memory claimInfo;
318
+ address payoutBeneficiary;
319
+ Amount payoutAmount;
320
+
321
+ {
322
+ // check that payout exists and is open
323
+ IPolicy.PayoutInfo memory payoutInfo = instanceContracts.instanceReader.getPayoutInfo(policyNftId, payoutId);
324
+ payoutBeneficiary = payoutInfo.beneficiary;
325
+ payoutAmount = payoutInfo.amount;
326
+ StateId payoutState = instanceContracts.instanceReader.getPayoutState(policyNftId, payoutId);
327
+ if(payoutState != EXPECTED()) {
328
+ revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
329
+ }
330
+
331
+ // check that payout amount does not violate claim amount
332
+ claimInfo = instanceContracts.instanceReader.getClaimInfo(policyNftId, payoutId.toClaimId());
333
+ if(claimInfo.paidAmount + payoutInfo.amount > claimInfo.claimAmount) {
334
+ revert ErrorClaimServicePayoutExceedsClaimAmount(
335
+ policyNftId,
336
+ payoutId.toClaimId(),
337
+ claimInfo.claimAmount,
338
+ claimInfo.paidAmount + payoutInfo.amount);
339
+ }
340
+
341
+ // effects
342
+ // update and save payout info with instance
343
+ payoutInfo.paidAt = TimestampLib.current();
344
+ instanceContracts.productStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
345
+ }
346
+
347
+ // update and save claim info with instance
348
+ {
349
+ ClaimId claimId = payoutId.toClaimId();
350
+ claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
351
+ claimInfo.openPayoutsCount -= 1;
352
+
353
+ // check if this payout is closing the linked claim
354
+ // update claim and policy info accordingly
355
+ if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
356
+ claimInfo.closedAt = TimestampLib.current();
357
+ instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
358
+
359
+ policyInfo.openClaimsCount -= 1;
360
+ } else {
361
+ instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
362
+ }
363
+ }
364
+
365
+ // update and save policy info with instance
366
+ policyInfo.payoutAmount = policyInfo.payoutAmount + payoutAmount;
367
+ instanceContracts.productStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
368
+
369
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount);
370
+
371
+ // effects + interactions (push tokens to beneficiary, product)
372
+ // delegate to pool to update book keeping and moving tokens payout
373
+ (netPayoutAmount, processingFeeAmount) = _poolService.processPayout(
374
+ instanceContracts.instanceReader,
375
+ instanceContracts.instanceStore,
376
+ policyInfo.productNftId, // product nft id
377
+ policyNftId,
378
+ policyInfo.bundleNftId,
379
+ payoutId,
380
+ payoutAmount,
381
+ payoutBeneficiary);
382
+ }
383
+
384
+ function cancelPayout(
385
+ NftId policyNftId,
386
+ PayoutId payoutId
387
+ )
388
+ external
389
+ virtual
390
+ restricted()
391
+ {
392
+ // checks
393
+ (
394
+ ,,
395
+ IInstance.InstanceContracts memory instanceContracts,
396
+ ) = _verifyCallerWithPolicy(policyNftId);
397
+
398
+ StateId payoutState = instanceContracts.instanceReader.getPayoutState(policyNftId, payoutId);
399
+ if (payoutState != EXPECTED()) {
400
+ revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
401
+ }
402
+
403
+ // effects
404
+ // update and save payout info with instance
405
+ instanceContracts.productStore.updatePayoutState(policyNftId, payoutId, CANCELLED());
406
+
407
+ {
408
+ ClaimId claimId = payoutId.toClaimId();
409
+ IPolicy.ClaimInfo memory claimInfo = instanceContracts.instanceReader.getClaimInfo(policyNftId, claimId);
410
+ claimInfo.openPayoutsCount -= 1;
411
+ instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
412
+ }
413
+
414
+ emit LogClaimServicePayoutCancelled(policyNftId, payoutId);
415
+ }
416
+
417
+ // internal functions
418
+
419
+ function _checkClaimAmount(
420
+ NftId policyNftId,
421
+ IPolicy.PolicyInfo memory policyInfo,
422
+ Amount claimAmount
423
+ )
424
+ internal
425
+ pure
426
+ {
427
+ // check claim amount > 0
428
+ if (claimAmount.eqz()) {
429
+ revert ErrorClaimServiceClaimAmountIsZero(policyNftId);
430
+ }
431
+
432
+ // check policy including this claim is still within sum insured
433
+ if(policyInfo.claimAmount + claimAmount > policyInfo.sumInsuredAmount) {
434
+ revert ErrorClaimServiceClaimExceedsSumInsured(
435
+ policyNftId,
436
+ policyInfo.sumInsuredAmount,
437
+ policyInfo.payoutAmount + claimAmount);
438
+ }
439
+ }
440
+
441
+ function _createPayout(
442
+ NftId policyNftId,
443
+ ClaimId claimId,
444
+ Amount amount,
445
+ address beneficiary,
446
+ bytes memory data
447
+ )
448
+ internal
449
+ virtual
450
+ returns (PayoutId payoutId)
451
+ {
452
+ // checks
453
+ (
454
+ ,,
455
+ IInstance.InstanceContracts memory instanceContracts,
456
+ // IPolicy.PolicyInfo memory policyInfo
457
+ ) = _verifyCallerWithPolicy(policyNftId);
458
+
459
+ IPolicy.ClaimInfo memory claimInfo = instanceContracts.instanceReader.getClaimInfo(policyNftId, claimId);
460
+
461
+ {
462
+ // check claim state
463
+ StateId claimState = instanceContracts.instanceReader.getClaimState(policyNftId, claimId);
464
+ if (claimState != CONFIRMED()) {
465
+ revert ErrorClaimServiceClaimNotConfirmed(policyNftId, claimId, claimState);
466
+ }
467
+
468
+ // check total payout amount remains within claim limit
469
+ Amount newPaidAmount = claimInfo.paidAmount + amount;
470
+ if (newPaidAmount > claimInfo.claimAmount) {
471
+ revert ErrorClaimServicePayoutExceedsClaimAmount(
472
+ policyNftId, claimId, claimInfo.claimAmount, newPaidAmount);
473
+ }
474
+ }
475
+
476
+ // effects
477
+ // create payout info with instance
478
+ uint24 payoutNo = claimInfo.payoutsCount + 1;
479
+ payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
480
+ if (beneficiary == address(0)) {
481
+ beneficiary = getRegistry().ownerOf(policyNftId);
482
+ }
483
+
484
+ instanceContracts.productStore.createPayout(
485
+ policyNftId,
486
+ payoutId,
487
+ IPolicy.PayoutInfo({
488
+ claimId: payoutId.toClaimId(),
489
+ amount: amount,
490
+ beneficiary: beneficiary,
491
+ data: data,
492
+ paidAt: TimestampLib.zero()}));
493
+
494
+ // update and save claim info with instance
495
+ claimInfo.payoutsCount += 1;
496
+ claimInfo.openPayoutsCount += 1;
497
+ instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
498
+
499
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
500
+ }
501
+
502
+ /// @dev Verifies the caller is a product and the policy is active.
503
+ /// Returns the product nft id, instance, instance contracts and policy info.
504
+ /// in InstanceContracts only the contracts instanceReader, instanceStore and productStore are set.
505
+ function _verifyCallerWithPolicy(
506
+ NftId policyNftId
507
+ )
508
+ internal
509
+ view
510
+ virtual
511
+ returns (
512
+ NftId productNftId,
513
+ IInstance instance,
514
+ IInstance.InstanceContracts memory instanceContracts,
515
+ IPolicy.PolicyInfo memory policyInfo
516
+ )
517
+ {
518
+ (productNftId, instance) = _getAndVerifyActiveProduct();
519
+ instanceContracts.instanceReader = InstanceReader(instance.getInstanceReader());
520
+ instanceContracts.instanceStore = InstanceStore(instance.getInstanceStore());
521
+ instanceContracts.productStore = ProductStore(instance.getProductStore());
522
+
523
+ // check caller(product) policy match
524
+ policyInfo = instanceContracts.instanceReader.getPolicyInfo(policyNftId);
525
+ if(policyInfo.productNftId != productNftId) {
526
+ revert ErrorClaimServicePolicyProductMismatch(policyNftId,
527
+ policyInfo.productNftId,
528
+ productNftId);
529
+ }
530
+ }
531
+
532
+
533
+ function _getAndVerifyActiveProduct()
534
+ internal
535
+ view
536
+ returns (
537
+ NftId productNftId,
538
+ IInstance instance
539
+ )
540
+ {
541
+ (
542
+ IRegistry.ObjectInfo memory info,
543
+ address instanceAddress
544
+ ) = ContractLib.getAndVerifyComponent(
545
+ getRegistry(),
546
+ msg.sender, // caller
547
+ PRODUCT(),
548
+ true); // isActive
549
+
550
+ // get component nft id and instance
551
+ productNftId = info.nftId;
552
+ instance = IInstance(instanceAddress);
553
+ }
554
+
555
+ function _verifyClaim(
556
+ InstanceReader instanceReader,
557
+ NftId policyNftId,
558
+ ClaimId claimId,
559
+ StateId expectedState
560
+ )
561
+ internal
562
+ view
563
+ returns (
564
+ IPolicy.ClaimInfo memory claimInfo
565
+ )
566
+ {
567
+ // check claim is created state
568
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
569
+ if(claimState != expectedState) {
570
+ revert ErrorClaimServiceClaimNotInExpectedState(
571
+ policyNftId, claimId, expectedState, claimState);
572
+ }
573
+
574
+ // get claim info
575
+ claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
576
+ }
577
+
578
+ function _processConfirmedClaimByPool(
579
+ InstanceReader instanceReader,
580
+ NftId productNftId,
581
+ NftId policyNftId,
582
+ ClaimId claimId,
583
+ Amount amount
584
+ )
585
+ internal
586
+ {
587
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
588
+ if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
589
+ address poolAddress = getRegistry().getObjectAddress(poolNftId);
590
+ IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
591
+ }
592
+ }
593
+
594
+
595
+ function _policyHolderClaimConfirmed(
596
+ NftId policyNftId,
597
+ ClaimId claimId,
598
+ Amount confirmedAmount
599
+ )
600
+ internal
601
+ {
602
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
603
+ if(address(policyHolder) != address(0)) {
604
+ policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
605
+ }
606
+ }
607
+
608
+ // TODO: move to policy helper lib or something
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 _getDomain() internal pure override returns(ObjectType) {
624
+ return CLAIM();
625
+ }
626
+ }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {ClaimService} from "./ClaimService.sol";
7
+
8
+ contract ClaimServiceManager is ProxyManager {
9
+
10
+ ClaimService private _claimService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
18
+ {
19
+ ClaimService svc = new ClaimService{salt: salt}();
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _claimService = ClaimService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getClaimService()
32
+ external
33
+ view
34
+ returns (ClaimService)
35
+ {
36
+ return _claimService;
37
+ }
38
+ }