@etherisc/gif-next 0.0.2-c5c9395-682 → 0.0.2-c5f9a75-197

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 (671) hide show
  1. package/README.md +51 -5
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1234 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1013 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1012 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1405 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +198 -261
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +178 -336
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1712 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +296 -2011
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +198 -74
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +353 -2827
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1623 -0
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +898 -337
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +246 -372
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +129 -156
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3587 -0
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  84. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  90. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  91. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  92. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  93. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  94. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  95. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  96. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  97. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  98. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  99. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  100. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
  101. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  102. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → oracle/IOracleService.sol/IOracleService.json} +255 -186
  103. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  104. package/artifacts/contracts/{components/Component.sol/Component.json → oracle/Oracle.sol/Oracle.json} +236 -207
  105. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  106. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +927 -0
  107. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +710 -0
  109. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  110. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +275 -403
  111. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  112. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  113. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  114. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1367 -0
  115. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  116. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +802 -0
  117. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  118. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +295 -47
  119. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  120. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +909 -0
  121. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  122. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +476 -122
  123. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  124. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → pool/Pool.sol/Pool.json} +346 -376
  125. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  126. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1474 -0
  127. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  128. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +726 -0
  129. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  130. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +737 -0
  131. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  132. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +698 -0
  133. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  134. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +336 -407
  135. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  136. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  137. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  138. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1346 -0
  139. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  140. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +814 -0
  141. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  142. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +136 -94
  143. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  144. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +886 -0
  145. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  146. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +867 -0
  147. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  148. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +117 -190
  149. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  150. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +309 -191
  151. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  152. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +12 -62
  153. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1239 -0
  155. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  156. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +770 -0
  157. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  158. package/artifacts/contracts/product/PricingService.sol/PricingService.json +865 -0
  159. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +746 -0
  161. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  162. package/artifacts/contracts/product/Product.sol/Product.json +1054 -0
  163. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  164. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  165. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  166. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  167. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  169. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +385 -31
  171. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +199 -125
  173. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  174. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/Registry.sol/Registry.json +783 -46
  176. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  177. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1858 -0
  178. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  179. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +372 -185
  180. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  181. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +126 -95
  182. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  183. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  184. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  185. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  186. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  187. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  188. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  190. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/Component.sol/Component.json} +268 -190
  192. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  193. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1573 -0
  194. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +794 -0
  196. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  197. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +432 -0
  198. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  199. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  200. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  201. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +107 -107
  202. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  203. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  204. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  205. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  206. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  207. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  208. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  210. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  212. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  214. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  216. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  218. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  219. package/artifacts/contracts/shared/IService.sol/IService.json +17 -6
  220. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  221. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  222. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  223. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  224. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  225. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +793 -0
  226. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  227. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  228. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  229. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  230. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  231. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  232. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +12 -70
  234. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  235. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  236. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +18 -106
  238. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  239. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  240. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  241. package/artifacts/contracts/shared/Service.sol/Service.json +19 -115
  242. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  243. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  244. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  245. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  246. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  247. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → staking/IStaking.sol/IStaking.json} +684 -575
  248. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  249. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  250. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  252. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  253. package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -0
  254. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  256. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +750 -0
  258. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  260. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1236 -0
  262. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  264. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  266. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  267. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  268. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  269. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  270. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  272. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  274. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  276. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  278. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  280. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  282. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  284. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  285. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  286. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  288. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  290. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  292. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  294. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  296. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  298. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  300. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  302. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  304. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  306. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  308. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  310. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  312. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  314. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  316. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  318. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  319. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  320. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  322. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  324. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  325. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  326. package/contracts/authorization/AccessAdmin.sol +592 -0
  327. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  328. package/contracts/authorization/Authorization.sol +217 -0
  329. package/contracts/authorization/IAccess.sol +48 -0
  330. package/contracts/authorization/IAccessAdmin.sol +135 -0
  331. package/contracts/authorization/IAuthorization.sol +54 -0
  332. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  333. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  334. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  335. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  336. package/contracts/distribution/BasicDistribution.sol +138 -0
  337. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  338. package/contracts/{components → distribution}/Distribution.sol +178 -163
  339. package/contracts/distribution/DistributionService.sol +336 -0
  340. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  341. package/contracts/distribution/IDistributionComponent.sol +52 -0
  342. package/contracts/{instance/service → distribution}/IDistributionService.sol +40 -38
  343. package/contracts/examples/fire/FirePool.sol +75 -0
  344. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  345. package/contracts/examples/fire/FireProduct.sol +323 -0
  346. package/contracts/examples/fire/FireProductAuthorization.sol +36 -0
  347. package/contracts/examples/fire/FireUSD.sol +26 -0
  348. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  349. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  350. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  351. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  352. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +30 -31
  353. package/contracts/instance/IInstance.sol +38 -73
  354. package/contracts/instance/IInstanceService.sol +50 -30
  355. package/contracts/instance/Instance.sol +147 -245
  356. package/contracts/instance/InstanceAdmin.sol +285 -0
  357. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  358. package/contracts/instance/InstanceReader.sol +202 -63
  359. package/contracts/instance/InstanceService.sol +305 -334
  360. package/contracts/instance/InstanceServiceManager.sol +14 -29
  361. package/contracts/instance/InstanceStore.sol +287 -0
  362. package/contracts/instance/base/BalanceStore.sol +123 -0
  363. package/contracts/instance/base/Cloneable.sol +28 -0
  364. package/contracts/instance/base/ObjectCounter.sol +21 -0
  365. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  366. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  367. package/contracts/instance/module/IAccess.sol +4 -12
  368. package/contracts/instance/module/IBundle.sol +6 -9
  369. package/contracts/instance/module/IComponents.sol +20 -15
  370. package/contracts/instance/module/IDistribution.sol +6 -6
  371. package/contracts/instance/module/IPolicy.sol +47 -35
  372. package/contracts/instance/module/IRisk.sol +1 -1
  373. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  374. package/contracts/oracle/BasicOracle.sol +48 -0
  375. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  376. package/contracts/oracle/IOracle.sol +36 -0
  377. package/contracts/oracle/IOracleComponent.sol +33 -0
  378. package/contracts/oracle/IOracleService.sol +65 -0
  379. package/contracts/oracle/Oracle.sol +167 -0
  380. package/contracts/oracle/OracleService.sol +281 -0
  381. package/contracts/oracle/OracleServiceManager.sol +39 -0
  382. package/contracts/pool/BasicPool.sol +166 -0
  383. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  384. package/contracts/pool/BundleService.sol +438 -0
  385. package/contracts/pool/BundleServiceManager.sol +39 -0
  386. package/contracts/pool/IBundleService.sol +134 -0
  387. package/contracts/pool/IPoolComponent.sol +58 -0
  388. package/contracts/pool/IPoolService.sol +160 -0
  389. package/contracts/pool/Pool.sol +326 -0
  390. package/contracts/pool/PoolService.sol +508 -0
  391. package/contracts/pool/PoolServiceManager.sol +39 -0
  392. package/contracts/product/ApplicationService.sol +247 -0
  393. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  394. package/contracts/product/BasicProduct.sol +53 -0
  395. package/contracts/product/BasicProductAuthorization.sol +43 -0
  396. package/contracts/product/ClaimService.sol +546 -0
  397. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  398. package/contracts/{instance/service → product}/IApplicationService.sol +16 -35
  399. package/contracts/product/IClaimService.sol +122 -0
  400. package/contracts/product/IPolicyService.sol +77 -0
  401. package/contracts/product/IPricingService.sol +39 -0
  402. package/contracts/product/IProductComponent.sol +39 -0
  403. package/contracts/product/IRiskService.sol +33 -0
  404. package/contracts/product/PolicyService.sol +651 -0
  405. package/contracts/product/PolicyServiceManager.sol +39 -0
  406. package/contracts/product/PricingService.sol +300 -0
  407. package/contracts/product/PricingServiceManager.sol +39 -0
  408. package/contracts/product/Product.sol +425 -0
  409. package/contracts/product/RiskService.sol +96 -0
  410. package/contracts/product/RiskServiceManager.sol +39 -0
  411. package/contracts/registry/ChainNft.sol +72 -32
  412. package/contracts/registry/IRegistry.sol +92 -25
  413. package/contracts/registry/IRegistryService.sol +42 -41
  414. package/contracts/registry/Registry.sol +427 -192
  415. package/contracts/registry/RegistryAdmin.sol +464 -0
  416. package/contracts/registry/RegistryService.sol +70 -100
  417. package/contracts/registry/RegistryServiceManager.sol +23 -32
  418. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  419. package/contracts/registry/ReleaseRegistry.sol +491 -0
  420. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  421. package/contracts/registry/TokenRegistry.sol +261 -62
  422. package/contracts/shared/Component.sol +268 -0
  423. package/contracts/shared/ComponentService.sol +641 -0
  424. package/contracts/shared/ComponentServiceManager.sol +38 -0
  425. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  426. package/contracts/shared/ContractLib.sol +38 -0
  427. package/contracts/shared/IComponent.sol +70 -0
  428. package/contracts/shared/IComponentService.sol +108 -0
  429. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  430. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  431. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  432. package/contracts/shared/INftOwnable.sol +2 -2
  433. package/contracts/shared/IPolicyHolder.sol +23 -14
  434. package/contracts/shared/IRegistryLinked.sol +0 -1
  435. package/contracts/shared/IService.sol +12 -3
  436. package/contracts/shared/InitializableCustom.sol +177 -0
  437. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  438. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  439. package/contracts/shared/KeyValueStore.sol +131 -0
  440. package/contracts/shared/Lifecycle.sol +77 -0
  441. package/contracts/shared/NftIdSet.sol +65 -0
  442. package/contracts/shared/NftOwnable.sol +10 -23
  443. package/contracts/shared/PolicyHolder.sol +19 -42
  444. package/contracts/shared/Registerable.sol +17 -16
  445. package/contracts/shared/RegistryLinked.sol +3 -7
  446. package/contracts/shared/Service.sol +48 -33
  447. package/contracts/shared/TokenHandler.sol +115 -9
  448. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  449. package/contracts/staking/IStaking.sol +168 -0
  450. package/contracts/staking/IStakingService.sol +160 -0
  451. package/contracts/staking/StakeManagerLib.sol +224 -0
  452. package/contracts/staking/Staking.sol +498 -0
  453. package/contracts/staking/StakingLifecycle.sol +23 -0
  454. package/contracts/staking/StakingManager.sol +52 -0
  455. package/contracts/staking/StakingReader.sol +183 -0
  456. package/contracts/staking/StakingService.sol +407 -0
  457. package/contracts/staking/StakingServiceManager.sol +44 -0
  458. package/contracts/staking/StakingStore.sol +605 -0
  459. package/contracts/staking/TargetManagerLib.sol +211 -0
  460. package/contracts/{types → type}/AddressSet.sol +1 -1
  461. package/contracts/type/Amount.sol +135 -0
  462. package/contracts/{types → type}/Blocknumber.sol +26 -3
  463. package/contracts/{types → type}/ClaimId.sol +25 -2
  464. package/contracts/{types → type}/Fee.sol +24 -22
  465. package/contracts/{types → type}/NftId.sol +15 -16
  466. package/contracts/{types → type}/NftIdSet.sol +2 -2
  467. package/contracts/type/ObjectType.sol +275 -0
  468. package/contracts/{types → type}/PayoutId.sol +33 -5
  469. package/contracts/{types → type}/Referral.sol +2 -1
  470. package/contracts/type/RequestId.sol +75 -0
  471. package/contracts/{types → type}/RiskId.sol +16 -2
  472. package/contracts/type/RoleId.sol +174 -0
  473. package/contracts/type/Seconds.sol +101 -0
  474. package/contracts/type/Selector.sol +102 -0
  475. package/contracts/{types → type}/StateId.sol +34 -4
  476. package/contracts/type/String.sol +53 -0
  477. package/contracts/{types → type}/Timestamp.sol +21 -2
  478. package/contracts/{types → type}/UFixed.sol +34 -9
  479. package/contracts/{types → type}/Version.sol +4 -2
  480. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  481. package/contracts/{shared → upgradeability}/ProxyManager.sol +92 -30
  482. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  483. package/contracts/{shared → upgradeability}/Versionable.sol +3 -3
  484. package/package.json +8 -5
  485. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  486. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  487. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  488. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  489. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  490. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  491. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  492. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  493. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  494. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  495. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  496. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  497. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  498. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  499. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  500. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  501. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  502. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  503. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  504. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  505. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  506. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  507. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  508. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  509. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  510. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  511. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  512. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  514. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  515. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  516. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  517. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  518. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  519. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  520. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  522. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  523. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  524. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  525. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  526. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  528. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  537. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  539. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  541. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  543. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  545. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  546. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  547. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  548. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  549. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  550. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  551. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  552. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  553. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  554. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  555. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  556. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  558. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  560. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  561. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  562. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  563. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  564. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  565. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  566. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  567. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  568. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  569. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  570. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  571. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  572. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  573. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  574. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  575. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  576. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  577. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  578. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  579. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  581. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  582. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  583. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  585. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  587. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  588. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  589. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  590. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  591. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  592. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  593. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  594. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  595. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  596. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  597. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  598. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  599. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  601. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  603. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  605. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  607. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  609. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  611. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  612. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  614. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  616. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  618. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  620. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  622. package/contracts/components/Component.sol +0 -253
  623. package/contracts/components/IComponent.sol +0 -76
  624. package/contracts/components/IDistributionComponent.sol +0 -71
  625. package/contracts/components/IPoolComponent.sol +0 -113
  626. package/contracts/components/IProductComponent.sol +0 -40
  627. package/contracts/components/Pool.sol +0 -303
  628. package/contracts/components/Product.sol +0 -293
  629. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  630. package/contracts/instance/Cloneable.sol +0 -51
  631. package/contracts/instance/InstanceAccessManager.sol +0 -527
  632. package/contracts/instance/base/ComponentService.sol +0 -121
  633. package/contracts/instance/base/KeyValueStore.sol +0 -180
  634. package/contracts/instance/base/Lifecycle.sol +0 -109
  635. package/contracts/instance/module/ISetup.sol +0 -33
  636. package/contracts/instance/module/ITreasury.sol +0 -23
  637. package/contracts/instance/service/ApplicationService.sol +0 -350
  638. package/contracts/instance/service/BundleService.sol +0 -431
  639. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  640. package/contracts/instance/service/ClaimService.sol +0 -151
  641. package/contracts/instance/service/DistributionService.sol +0 -435
  642. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  643. package/contracts/instance/service/IBundleService.sol +0 -93
  644. package/contracts/instance/service/IClaimService.sol +0 -61
  645. package/contracts/instance/service/IPolicyService.sol +0 -72
  646. package/contracts/instance/service/IPoolService.sol +0 -99
  647. package/contracts/instance/service/IProductService.sol +0 -40
  648. package/contracts/instance/service/PolicyService.sol +0 -362
  649. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  650. package/contracts/instance/service/PoolService.sol +0 -303
  651. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  652. package/contracts/instance/service/ProductService.sol +0 -210
  653. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  654. package/contracts/registry/RegistryAccessManager.sol +0 -216
  655. package/contracts/registry/ReleaseManager.sol +0 -324
  656. package/contracts/shared/ContractDeployerLib.sol +0 -72
  657. package/contracts/test/TestFee.sol +0 -25
  658. package/contracts/test/TestRegisterable.sol +0 -18
  659. package/contracts/test/TestRoleId.sol +0 -14
  660. package/contracts/test/TestService.sol +0 -25
  661. package/contracts/test/TestToken.sol +0 -26
  662. package/contracts/test/TestVersion.sol +0 -44
  663. package/contracts/test/TestVersionable.sol +0 -17
  664. package/contracts/types/Amount.sol +0 -60
  665. package/contracts/types/ChainId.sol +0 -38
  666. package/contracts/types/NumberId.sol +0 -52
  667. package/contracts/types/ObjectType.sol +0 -157
  668. package/contracts/types/RoleId.sol +0 -97
  669. package/contracts/types/Seconds.sol +0 -54
  670. /package/contracts/{types → type}/DistributorType.sol +0 -0
  671. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,546 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IComponents} from "../instance/module/IComponents.sol";
5
+ import {IInstance} from "../instance/IInstance.sol";
6
+ import {IPolicy} from "../instance/module/IPolicy.sol";
7
+ import {Amount, AmountLib} from "../type/Amount.sol";
8
+ import {TimestampLib} from "../type/Timestamp.sol";
9
+ import {ObjectType, CLAIM, PRODUCT, POOL} from "../type/ObjectType.sol";
10
+ import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {FeeLib} from "../type/Fee.sol";
13
+ import {StateId} from "../type/StateId.sol";
14
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
15
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
16
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
17
+ import {ContractLib} from "../shared/ContractLib.sol";
18
+ import {InstanceReader} from "../instance/InstanceReader.sol";
19
+ import {IClaimService} from "./IClaimService.sol";
20
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
21
+ import {IPoolService} from "../pool/IPoolService.sol";
22
+
23
+
24
+ contract ClaimService is
25
+ ComponentVerifyingService,
26
+ IClaimService
27
+ {
28
+
29
+ IPoolService internal _poolService;
30
+
31
+ function _initialize(
32
+ address owner,
33
+ bytes memory data
34
+ )
35
+ internal
36
+ virtual override
37
+ initializer()
38
+ {
39
+ (
40
+ address registryAddress,
41
+ address authority
42
+ ) = abi.decode(data, (address, address));
43
+
44
+ _initializeService(registryAddress, authority, owner);
45
+
46
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
47
+
48
+ _registerInterface(type(IClaimService).interfaceId);
49
+ }
50
+
51
+ function submit(
52
+ NftId policyNftId,
53
+ Amount claimAmount,
54
+ bytes memory claimData // claim submission data
55
+ )
56
+ external
57
+ virtual
58
+ nonReentrant()
59
+ returns (ClaimId claimId)
60
+ {
61
+ (
62
+ IInstance instance,
63
+ InstanceReader instanceReader,
64
+ IPolicy.PolicyInfo memory policyInfo
65
+ ) = _verifyCallerWithPolicy(policyNftId);
66
+
67
+ // check policy is in its active period
68
+ if(policyInfo.activatedAt.eqz() || TimestampLib.blockTimestamp() >= policyInfo.expiredAt) {
69
+ revert ErrorClaimServicePolicyNotOpen(policyNftId);
70
+ }
71
+
72
+ // TODO check claim amount > 0
73
+ // check policy including this claim is still within sum insured
74
+ if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
75
+ revert ErrorClaimServiceClaimExceedsSumInsured(
76
+ policyNftId,
77
+ policyInfo.sumInsuredAmount,
78
+ AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
79
+ }
80
+
81
+ // create new claim
82
+ claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
83
+ instance.getInstanceStore().createClaim(
84
+ policyNftId,
85
+ claimId,
86
+ IPolicy.ClaimInfo({
87
+ claimAmount: claimAmount,
88
+ paidAmount: AmountLib.zero(),
89
+ payoutsCount: 0,
90
+ openPayoutsCount: 0,
91
+ submissionData: claimData,
92
+ processData: "",
93
+ closedAt: TimestampLib.zero()}));
94
+
95
+ // update and save policy info with instance
96
+ policyInfo.claimsCount += 1;
97
+ policyInfo.openClaimsCount += 1;
98
+ // policy claim amount is only updated when claim is confirmed
99
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
100
+
101
+ emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
102
+ }
103
+
104
+
105
+ function confirm(
106
+ NftId policyNftId,
107
+ ClaimId claimId,
108
+ Amount confirmedAmount,
109
+ bytes memory data // claim processing data
110
+ )
111
+ external
112
+ virtual
113
+ nonReentrant()
114
+ {
115
+ (
116
+ IInstance instance,
117
+ InstanceReader instanceReader,
118
+ IPolicy.PolicyInfo memory policyInfo
119
+ ) = _verifyCallerWithPolicy(policyNftId);
120
+
121
+ // TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
122
+
123
+ // check/update claim info
124
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
125
+ claimInfo.claimAmount = confirmedAmount;
126
+ claimInfo.processData = data;
127
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
128
+
129
+ // TODO test if claim results in total claim amount == sum insured amount
130
+ // should policy still be active it needs to automatically become expired
131
+
132
+ // update and save policy info with instance
133
+ policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
134
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
135
+
136
+ emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
137
+
138
+ // callback to policy holder if applicable
139
+ _policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
140
+ }
141
+
142
+
143
+ function decline(
144
+ NftId policyNftId,
145
+ ClaimId claimId,
146
+ bytes memory data // claim processing data
147
+ )
148
+ external
149
+ virtual
150
+ nonReentrant()
151
+ {
152
+ (
153
+ IInstance instance,
154
+ InstanceReader instanceReader,
155
+ IPolicy.PolicyInfo memory policyInfo
156
+ ) = _verifyCallerWithPolicy(policyNftId);
157
+
158
+ // check/update claim info
159
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
160
+ claimInfo.processData = data;
161
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
162
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, DECLINED());
163
+
164
+ // update and save policy info with instance
165
+ policyInfo.openClaimsCount -= 1;
166
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
167
+
168
+ emit LogClaimServiceClaimDeclined(policyNftId, claimId);
169
+ }
170
+
171
+
172
+ // TODO add test case
173
+ function revoke(
174
+ NftId policyNftId,
175
+ ClaimId claimId
176
+ )
177
+ external
178
+ virtual
179
+ nonReentrant()
180
+ {
181
+ (
182
+ IInstance instance,
183
+ InstanceReader instanceReader,
184
+ IPolicy.PolicyInfo memory policyInfo
185
+ ) = _verifyCallerWithPolicy(policyNftId);
186
+
187
+ // check/update claim info
188
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
189
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
190
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, REVOKED());
191
+
192
+ // update and save policy info with instance
193
+ policyInfo.openClaimsCount -= 1;
194
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
195
+
196
+ emit LogClaimServiceClaimRevoked(policyNftId, claimId);
197
+ }
198
+
199
+
200
+ function close(
201
+ NftId policyNftId,
202
+ ClaimId claimId
203
+ )
204
+ external
205
+ virtual
206
+ nonReentrant()
207
+ {
208
+ (
209
+ IInstance instance,
210
+ InstanceReader instanceReader,
211
+ IPolicy.PolicyInfo memory policyInfo
212
+ ) = _verifyCallerWithPolicy(policyNftId);
213
+
214
+ // check/update claim info
215
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, CONFIRMED());
216
+
217
+ // check claim has no open payouts
218
+ if(claimInfo.openPayoutsCount > 0) {
219
+ revert ErrorClaimServiceClaimWithOpenPayouts(
220
+ policyNftId,
221
+ claimId,
222
+ claimInfo.openPayoutsCount);
223
+ }
224
+
225
+ // check claim paid amount matches with claim amount
226
+ if(claimInfo.paidAmount.toInt() < claimInfo.claimAmount.toInt()) {
227
+ revert ErrorClaimServiceClaimWithMissingPayouts(
228
+ policyNftId,
229
+ claimId,
230
+ claimInfo.claimAmount,
231
+ claimInfo.paidAmount);
232
+ }
233
+
234
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
235
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
236
+ }
237
+
238
+
239
+ function createPayoutForBeneficiary(
240
+ NftId policyNftId,
241
+ ClaimId claimId,
242
+ Amount amount,
243
+ address beneficiary,
244
+ bytes memory data
245
+ )
246
+ external
247
+ virtual
248
+ nonReentrant()
249
+ returns (PayoutId payoutId)
250
+ {
251
+ if (beneficiary == address(0)) {
252
+ revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
253
+ }
254
+
255
+ return _createPayout(
256
+ policyNftId,
257
+ claimId,
258
+ amount,
259
+ beneficiary,
260
+ data);
261
+ }
262
+
263
+
264
+ function createPayout(
265
+ NftId policyNftId,
266
+ ClaimId claimId,
267
+ Amount amount,
268
+ bytes memory data
269
+ )
270
+ external
271
+ virtual
272
+ nonReentrant()
273
+ returns (PayoutId payoutId)
274
+ {
275
+ return _createPayout(
276
+ policyNftId,
277
+ claimId,
278
+ amount,
279
+ address(0), // defaults to owner of policy nft
280
+ data);
281
+ }
282
+
283
+
284
+ function processPayout(
285
+ NftId policyNftId,
286
+ PayoutId payoutId
287
+ )
288
+ external
289
+ virtual
290
+ nonReentrant()
291
+ {
292
+ (
293
+ IInstance instance,
294
+ InstanceReader instanceReader,
295
+ IPolicy.PolicyInfo memory policyInfo
296
+ ) = _verifyCallerWithPolicy(policyNftId);
297
+
298
+ // TODO add check that payout exists and is open
299
+ IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
300
+
301
+ // update and save payout info with instance
302
+ payoutInfo.paidAt = TimestampLib.blockTimestamp();
303
+ instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
304
+
305
+ ClaimId claimId = payoutId.toClaimId();
306
+ Amount payoutAmount = payoutInfo.amount;
307
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
308
+ claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
309
+ claimInfo.openPayoutsCount -= 1;
310
+
311
+ // check if this payout is closing the linked claim
312
+ // update claim and policy info accordingly
313
+ if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
314
+ claimInfo.closedAt == TimestampLib.blockTimestamp();
315
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
316
+
317
+ policyInfo.openClaimsCount -= 1;
318
+ } else {
319
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
320
+ }
321
+
322
+ // update and save policy info with instance
323
+ policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
324
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
325
+
326
+ // inform pool about payout
327
+ _poolService.reduceCollateral(
328
+ instance,
329
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
330
+ policyNftId,
331
+ policyInfo,
332
+ payoutAmount);
333
+
334
+ // transfer payout token and fee
335
+ (
336
+ Amount netPayoutAmount,
337
+ Amount processingFeeAmount,
338
+ address beneficiary
339
+ ) = _calculatePayoutAmount(
340
+ instanceReader,
341
+ policyNftId,
342
+ policyInfo,
343
+ payoutInfo);
344
+
345
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
346
+
347
+ {
348
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
349
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
350
+ poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
351
+
352
+ // TODO add 2nd token tx if processingFeeAmount > 0
353
+ }
354
+
355
+ // callback to policy holder if applicable
356
+ _policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
357
+ }
358
+
359
+ // internal functions
360
+
361
+
362
+ function _createPayout(
363
+ NftId policyNftId,
364
+ ClaimId claimId,
365
+ Amount amount,
366
+ address beneficiary,
367
+ bytes memory data
368
+ )
369
+ internal
370
+ virtual
371
+ returns (PayoutId payoutId)
372
+ {
373
+ (
374
+ IInstance instance,
375
+ InstanceReader instanceReader,
376
+ IPolicy.PolicyInfo memory policyInfo
377
+ ) = _verifyCallerWithPolicy(policyNftId);
378
+
379
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
380
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
381
+
382
+ // TODO add checks
383
+ // claim needs to be open
384
+ // claim.paidAmount + amount <= claim.claimAmount
385
+
386
+ // check/update claim info
387
+ // create payout info with instance
388
+ uint8 claimNo = claimInfo.payoutsCount + 1;
389
+ payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
390
+ instance.getInstanceStore().createPayout(
391
+ policyNftId,
392
+ payoutId,
393
+ IPolicy.PayoutInfo({
394
+ claimId: payoutId.toClaimId(),
395
+ amount: amount,
396
+ beneficiary: beneficiary,
397
+ data: data,
398
+ paidAt: TimestampLib.zero()}));
399
+
400
+ // update and save claim info with instance
401
+ claimInfo.payoutsCount += 1;
402
+ claimInfo.openPayoutsCount += 1;
403
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
404
+
405
+ // update and save policy info with instance
406
+ policyInfo.payoutAmount.add(amount);
407
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
408
+
409
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
410
+ }
411
+
412
+
413
+ function _calculatePayoutAmount(
414
+ InstanceReader instanceReader,
415
+ NftId policyNftId,
416
+ IPolicy.PolicyInfo memory policyInfo,
417
+ IPolicy.PayoutInfo memory payoutInfo
418
+ )
419
+ internal
420
+ returns (
421
+ Amount netPayoutAmount,
422
+ Amount processingFeeAmount,
423
+ address beneficiary
424
+ )
425
+ {
426
+ Amount payoutAmount = payoutInfo.amount;
427
+
428
+ if(payoutAmount.gtz()) {
429
+ NftId productNftId = policyInfo.productNftId;
430
+
431
+ // get pool component info from policy or product
432
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
433
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
434
+
435
+ netPayoutAmount = payoutAmount;
436
+
437
+ if (payoutInfo.beneficiary == address(0)) {
438
+ beneficiary = getRegistry().ownerOf(policyNftId);
439
+ } else {
440
+ beneficiary = payoutInfo.beneficiary;
441
+ }
442
+
443
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
444
+ if(FeeLib.gtz(productInfo.processingFee)) {
445
+ // TODO calculate and set net payout and processing fees
446
+ }
447
+ }
448
+ }
449
+
450
+
451
+ function _verifyCallerWithPolicy(
452
+ NftId policyNftId
453
+ )
454
+ internal
455
+ view
456
+ virtual
457
+ returns (
458
+ IInstance instance,
459
+ InstanceReader instanceReader,
460
+ IPolicy.PolicyInfo memory policyInfo
461
+ )
462
+ {
463
+ NftId productNftId;
464
+ (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
465
+ instanceReader = instance.getInstanceReader();
466
+
467
+ // check caller(product) policy match
468
+ policyInfo = instanceReader.getPolicyInfo(policyNftId);
469
+ if(policyInfo.productNftId != productNftId) {
470
+ revert ErrorClaimServicePolicyProductMismatch(policyNftId,
471
+ policyInfo.productNftId,
472
+ productNftId);
473
+ }
474
+ }
475
+
476
+ function _verifyClaim(
477
+ InstanceReader instanceReader,
478
+ NftId policyNftId,
479
+ ClaimId claimId,
480
+ StateId expectedState
481
+ )
482
+ internal
483
+ view
484
+ returns (
485
+ IPolicy.ClaimInfo memory claimInfo
486
+ )
487
+ {
488
+ // check claim is created state
489
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
490
+ if(claimState != expectedState) {
491
+ revert ErrorClaimServiceClaimNotInExpectedState(
492
+ policyNftId, claimId, expectedState, claimState);
493
+ }
494
+
495
+ // get claim info
496
+ claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
497
+ }
498
+
499
+
500
+ function _policyHolderClaimConfirmed(
501
+ NftId policyNftId,
502
+ ClaimId claimId,
503
+ Amount confirmedAmount
504
+ )
505
+ internal
506
+ {
507
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
508
+ if(address(policyHolder) != address(0)) {
509
+ policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
510
+ }
511
+ }
512
+
513
+
514
+ function _policyHolderPayoutExecuted(
515
+ NftId policyNftId,
516
+ PayoutId payoutId,
517
+ address beneficiary,
518
+ Amount payoutAmount
519
+ )
520
+ internal
521
+ {
522
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
523
+ if(address(policyHolder) != address(0)) {
524
+ policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
525
+ }
526
+ }
527
+
528
+
529
+ function _getPolicyHolder(NftId policyNftId)
530
+ internal
531
+ view
532
+ returns (IPolicyHolder policyHolder)
533
+ {
534
+ address policyHolderAddress = getRegistry().ownerOf(policyNftId);
535
+ policyHolder = IPolicyHolder(policyHolderAddress);
536
+
537
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
538
+ policyHolder = IPolicyHolder(address(0));
539
+ }
540
+ }
541
+
542
+
543
+ function _getDomain() internal pure override returns(ObjectType) {
544
+ return CLAIM();
545
+ }
546
+ }
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../../shared/IVersionable.sol";
5
- import {ProxyManager} from "../../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {ClaimService} from "./ClaimService.sol";
7
7
 
8
8
  contract ClaimServiceManager is ProxyManager {
@@ -11,15 +11,18 @@ contract ClaimServiceManager is ProxyManager {
11
11
 
12
12
  /// @dev initializes proxy manager with service implementation
13
13
  constructor(
14
- address registryAddress
15
- )
16
- ProxyManager(registryAddress)
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
17
18
  {
18
- ClaimService svc = new ClaimService();
19
- bytes memory data = abi.encode(registryAddress, address(this));
20
- IVersionable versionable = deploy(
19
+ ClaimService svc = new ClaimService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
21
23
  address(svc),
22
- data);
24
+ data,
25
+ salt);
23
26
 
24
27
  _claimService = ClaimService(address(versionable));
25
28
  }
@@ -1,32 +1,30 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {IPolicy} from "../module/IPolicy.sol";
5
- import {IRisk} from "../module/IRisk.sol";
6
- import {IService} from "../../shared/IService.sol";
4
+ import {IPolicy} from "../instance/module/IPolicy.sol";
5
+ import {IService} from "../shared/IService.sol";
7
6
 
8
- import {NftId} from "../../types/NftId.sol";
9
- import {ReferralId} from "../../types/Referral.sol";
10
- import {RiskId} from "../../types/RiskId.sol";
11
- import {Seconds} from "../../types/Seconds.sol";
12
- import {StateId} from "../../types/StateId.sol";
13
- import {Timestamp} from "../../types/Timestamp.sol";
14
- import {UFixed} from "../../types/UFixed.sol";
15
- import {Fee} from "../../types/Fee.sol";
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ObjectType} from "../type/ObjectType.sol";
10
+ import {ReferralId} from "../type/Referral.sol";
11
+ import {RiskId} from "../type/RiskId.sol";
12
+ import {Seconds} from "../type/Seconds.sol";
16
13
 
17
14
  /// @dev gif service responsible for creating applications
18
15
  /// only product components may call transaction functions
19
16
  interface IApplicationService is IService {
20
17
 
21
- error IApplicationServicePolicyNotApplied(NftId applicationNftId);
22
- error IApplicationServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
18
+ error ErrorApplicationServiceNotProduct(NftId callerNftId, ObjectType callerType);
19
+ error ErrorApplicationServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
23
20
 
24
21
  /// @dev creates a new application based on the specified attributes
25
22
  /// may only be called by a product component
26
23
  function create(
27
24
  address applicationOwner,
28
25
  RiskId riskId,
29
- uint256 sumInsuredAmount,
26
+ Amount sumInsuredAmount,
27
+ Amount premiumAmount,
30
28
  Seconds lifetime,
31
29
  NftId bundleNftId,
32
30
  ReferralId referralId,
@@ -41,8 +39,8 @@ interface IApplicationService is IService {
41
39
  RiskId riskId,
42
40
  NftId bundleNftId,
43
41
  ReferralId referralId,
44
- uint256 sumInsuredAmount,
45
- uint256 lifetime,
42
+ Amount sumInsuredAmount,
43
+ Seconds lifetime,
46
44
  bytes memory applicationData
47
45
  ) external;
48
46
 
@@ -62,21 +60,4 @@ interface IApplicationService is IService {
62
60
  /// an application can only be revoked in applied state
63
61
  /// only the application holder may revoke an application
64
62
  function revoke(NftId policyNftId) external;
65
-
66
- /// @dev calculates the premium amount for the specified attributes
67
- /// also returns the various fee components involved with creating a policy
68
- function calculatePremium(
69
- NftId productNftId,
70
- RiskId riskId,
71
- uint256 sumInsuredAmount,
72
- Seconds lifetime,
73
- bytes memory applicationData,
74
- NftId bundleNftId,
75
- ReferralId referralId
76
- )
77
- external
78
- view
79
- returns (
80
- IPolicy.Premium memory premium
81
- );
82
- }
63
+ }