@etherisc/gif-next 0.0.2-f831797-539 → 0.0.2-f946ccd-184

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 (667) hide show
  1. package/README.md +57 -88
  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/{components → distribution}/Distribution.sol/Distribution.json +220 -509
  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 +282 -227
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +254 -335
  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 +278 -1906
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +318 -70
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +335 -2711
  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 +904 -338
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +350 -343
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +132 -111
  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 -49
  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 +25 -150
  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} +305 -170
  103. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  104. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +871 -0
  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} +293 -383
  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 +412 -135
  119. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  120. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +297 -324
  121. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  122. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1198 -0
  123. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  124. package/artifacts/contracts/pool/Pool.sol/Pool.json +1034 -0
  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} +354 -397
  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 → product}/IApplicationService.sol/IApplicationService.json +129 -168
  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/base/ComponentService.sol/ComponentService.json → product/IPricingService.sol/IPricingService.json} +214 -217
  149. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +948 -0
  151. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  152. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +81 -65
  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 +72 -16
  169. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +394 -21
  171. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +199 -149
  173. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  175. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/Registry.sol/Registry.json +793 -37
  177. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  178. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1858 -0
  179. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  180. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +372 -204
  181. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +126 -95
  183. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  184. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  185. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  186. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  187. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  188. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  189. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  191. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  192. package/artifacts/contracts/shared/Component.sol/Component.json +685 -0
  193. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  194. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1573 -0
  195. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  196. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +794 -0
  197. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  198. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +146 -142
  199. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  200. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  201. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  202. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +193 -75
  203. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  205. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  206. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +215 -227
  207. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  208. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  209. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  210. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  211. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  213. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  215. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  217. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  219. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IService.sol/IService.json +96 -19
  221. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  222. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  223. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  224. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  225. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  226. package/artifacts/contracts/{components/Component.sol/Component.json → shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json} +194 -215
  227. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  228. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  229. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  230. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  231. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  232. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  233. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  234. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +12 -70
  235. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  236. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  237. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  238. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +18 -106
  239. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  240. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  241. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  242. package/artifacts/contracts/shared/Service.sol/Service.json +88 -113
  243. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  244. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  245. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  246. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  247. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  248. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  249. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  250. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  251. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  252. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  253. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  254. package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -0
  255. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  256. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  257. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  258. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +750 -0
  259. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  260. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  261. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  262. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1236 -0
  263. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  264. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  265. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  266. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  267. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  268. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  269. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  270. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  271. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  272. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  273. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  274. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  275. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  276. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  277. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  278. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  279. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  280. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  281. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  282. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  283. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  285. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  286. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  287. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  288. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  289. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  291. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  292. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  293. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  294. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  295. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  296. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  297. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  298. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  299. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  300. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  301. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  302. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  303. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  304. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  305. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  306. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  307. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  308. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  309. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  310. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  311. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  312. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  313. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  314. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  315. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  316. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  317. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  318. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  319. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  320. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  322. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  324. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  325. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  326. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  327. package/contracts/authorization/AccessAdmin.sol +592 -0
  328. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  329. package/contracts/authorization/Authorization.sol +217 -0
  330. package/contracts/authorization/IAccess.sol +48 -0
  331. package/contracts/authorization/IAccessAdmin.sol +135 -0
  332. package/contracts/authorization/IAuthorization.sol +54 -0
  333. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  334. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  335. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  336. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  337. package/contracts/distribution/BasicDistribution.sol +138 -0
  338. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  339. package/contracts/{components → distribution}/Distribution.sol +178 -163
  340. package/contracts/distribution/DistributionService.sol +336 -0
  341. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  342. package/contracts/distribution/IDistributionComponent.sol +52 -0
  343. package/contracts/{instance/service → distribution}/IDistributionService.sol +41 -38
  344. package/contracts/examples/fire/FirePool.sol +75 -0
  345. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  346. package/contracts/examples/fire/FireProduct.sol +324 -0
  347. package/contracts/examples/fire/FireProductAuthorization.sol +35 -0
  348. package/contracts/examples/fire/FireUSD.sol +26 -0
  349. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  350. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  351. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  352. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  353. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +30 -31
  354. package/contracts/instance/IInstance.sol +43 -73
  355. package/contracts/instance/IInstanceService.sol +56 -24
  356. package/contracts/instance/Instance.sol +160 -226
  357. package/contracts/instance/InstanceAdmin.sol +285 -0
  358. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  359. package/contracts/instance/InstanceReader.sol +201 -65
  360. package/contracts/instance/InstanceService.sol +333 -356
  361. package/contracts/instance/InstanceServiceManager.sol +14 -29
  362. package/contracts/instance/InstanceStore.sol +287 -0
  363. package/contracts/instance/base/BalanceStore.sol +123 -0
  364. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  365. package/contracts/instance/base/ObjectCounter.sol +21 -0
  366. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  367. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
  368. package/contracts/instance/module/IAccess.sol +19 -20
  369. package/contracts/instance/module/IBundle.sol +8 -9
  370. package/contracts/instance/module/IComponents.sol +20 -9
  371. package/contracts/instance/module/IDistribution.sol +6 -6
  372. package/contracts/instance/module/IPolicy.sol +47 -35
  373. package/contracts/instance/module/IRisk.sol +1 -1
  374. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  375. package/contracts/oracle/BasicOracle.sol +48 -0
  376. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  377. package/contracts/oracle/IOracle.sol +36 -0
  378. package/contracts/oracle/IOracleComponent.sol +33 -0
  379. package/contracts/oracle/IOracleService.sol +65 -0
  380. package/contracts/oracle/Oracle.sol +167 -0
  381. package/contracts/oracle/OracleService.sol +281 -0
  382. package/contracts/oracle/OracleServiceManager.sol +39 -0
  383. package/contracts/pool/BasicPool.sol +166 -0
  384. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  385. package/contracts/pool/BundleService.sol +438 -0
  386. package/contracts/pool/BundleServiceManager.sol +39 -0
  387. package/contracts/pool/IBundleService.sol +134 -0
  388. package/contracts/pool/IPoolComponent.sol +58 -0
  389. package/contracts/pool/IPoolService.sol +160 -0
  390. package/contracts/pool/Pool.sol +326 -0
  391. package/contracts/pool/PoolService.sol +508 -0
  392. package/contracts/pool/PoolServiceManager.sol +39 -0
  393. package/contracts/product/ApplicationService.sol +247 -0
  394. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  395. package/contracts/product/BasicProduct.sol +53 -0
  396. package/contracts/product/BasicProductAuthorization.sol +43 -0
  397. package/contracts/product/ClaimService.sol +546 -0
  398. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  399. package/contracts/{instance/service → product}/IApplicationService.sol +16 -35
  400. package/contracts/product/IClaimService.sol +122 -0
  401. package/contracts/product/IPolicyService.sol +77 -0
  402. package/contracts/product/IPricingService.sol +39 -0
  403. package/contracts/product/IProductComponent.sol +39 -0
  404. package/contracts/product/IRiskService.sol +33 -0
  405. package/contracts/product/PolicyService.sol +651 -0
  406. package/contracts/product/PolicyServiceManager.sol +39 -0
  407. package/contracts/product/PricingService.sol +300 -0
  408. package/contracts/product/PricingServiceManager.sol +39 -0
  409. package/contracts/product/Product.sol +425 -0
  410. package/contracts/product/RiskService.sol +96 -0
  411. package/contracts/product/RiskServiceManager.sol +39 -0
  412. package/contracts/registry/ChainNft.sol +80 -32
  413. package/contracts/registry/IRegistry.sol +94 -25
  414. package/contracts/registry/IRegistryService.sol +44 -42
  415. package/contracts/registry/ITransferInterceptor.sol +1 -0
  416. package/contracts/registry/Registry.sol +439 -201
  417. package/contracts/registry/RegistryAdmin.sol +464 -0
  418. package/contracts/registry/RegistryService.sol +70 -101
  419. package/contracts/registry/RegistryServiceManager.sol +23 -32
  420. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  421. package/contracts/registry/ReleaseRegistry.sol +491 -0
  422. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  423. package/contracts/registry/TokenRegistry.sol +261 -62
  424. package/contracts/shared/Component.sol +268 -0
  425. package/contracts/shared/ComponentService.sol +641 -0
  426. package/contracts/shared/ComponentServiceManager.sol +38 -0
  427. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  428. package/contracts/shared/ContractLib.sol +38 -0
  429. package/contracts/shared/IComponent.sol +70 -0
  430. package/contracts/shared/IComponentService.sol +108 -0
  431. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  432. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  433. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  434. package/contracts/shared/INftOwnable.sol +2 -2
  435. package/contracts/shared/IPolicyHolder.sol +23 -14
  436. package/contracts/shared/IRegistryLinked.sol +0 -1
  437. package/contracts/shared/IService.sol +15 -8
  438. package/contracts/shared/InitializableCustom.sol +177 -0
  439. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  440. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  441. package/contracts/shared/KeyValueStore.sol +131 -0
  442. package/contracts/shared/Lifecycle.sol +77 -0
  443. package/contracts/shared/NftIdSet.sol +65 -0
  444. package/contracts/shared/NftOwnable.sol +10 -23
  445. package/contracts/shared/PolicyHolder.sol +19 -42
  446. package/contracts/shared/Registerable.sol +17 -16
  447. package/contracts/shared/RegistryLinked.sol +3 -7
  448. package/contracts/shared/Service.sol +56 -27
  449. package/contracts/shared/TokenHandler.sol +115 -9
  450. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  451. package/contracts/staking/IStaking.sol +168 -0
  452. package/contracts/staking/IStakingService.sol +160 -0
  453. package/contracts/staking/StakeManagerLib.sol +224 -0
  454. package/contracts/staking/Staking.sol +498 -0
  455. package/contracts/staking/StakingLifecycle.sol +23 -0
  456. package/contracts/staking/StakingManager.sol +52 -0
  457. package/contracts/staking/StakingReader.sol +183 -0
  458. package/contracts/staking/StakingService.sol +407 -0
  459. package/contracts/staking/StakingServiceManager.sol +44 -0
  460. package/contracts/staking/StakingStore.sol +605 -0
  461. package/contracts/staking/TargetManagerLib.sol +211 -0
  462. package/contracts/{types → type}/AddressSet.sol +1 -1
  463. package/contracts/type/Amount.sol +135 -0
  464. package/contracts/{types → type}/Blocknumber.sol +26 -3
  465. package/contracts/{types → type}/ClaimId.sol +25 -2
  466. package/contracts/{types → type}/Fee.sol +33 -24
  467. package/contracts/{types → type}/NftId.sol +15 -16
  468. package/contracts/{types → type}/NftIdSet.sol +2 -2
  469. package/contracts/type/ObjectType.sol +275 -0
  470. package/contracts/{types → type}/PayoutId.sol +33 -5
  471. package/contracts/{types → type}/Referral.sol +2 -1
  472. package/contracts/type/RequestId.sol +75 -0
  473. package/contracts/{types → type}/RiskId.sol +16 -2
  474. package/contracts/type/RoleId.sol +174 -0
  475. package/contracts/type/Seconds.sol +101 -0
  476. package/contracts/type/Selector.sol +102 -0
  477. package/contracts/{types → type}/StateId.sol +34 -4
  478. package/contracts/type/String.sol +53 -0
  479. package/contracts/{types → type}/Timestamp.sol +21 -2
  480. package/contracts/{types → type}/UFixed.sol +34 -9
  481. package/contracts/{types → type}/Version.sol +4 -2
  482. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  483. package/contracts/{shared → upgradeability}/ProxyManager.sol +92 -30
  484. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  485. package/contracts/{shared → upgradeability}/Versionable.sol +3 -3
  486. package/package.json +8 -5
  487. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  488. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  489. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  490. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  491. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  492. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  493. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  494. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  495. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  496. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -783
  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 -984
  500. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  501. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  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 -968
  514. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  515. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  516. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  517. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
  518. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  519. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  520. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  522. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  523. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  524. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  525. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1724
  526. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -801
  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/IClaimService.sol/IClaimService.json +0 -409
  532. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
  538. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  540. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -816
  542. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -653
  544. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  546. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  548. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  549. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  550. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  551. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  552. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  553. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  554. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  555. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  556. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  558. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  560. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  561. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  562. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  563. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  564. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  565. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  566. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  568. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  570. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  572. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  573. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  574. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  575. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  576. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  577. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  578. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  579. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  580. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  582. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  584. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  586. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  588. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  590. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  591. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  592. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  594. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  595. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  596. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  598. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  600. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  602. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  604. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  606. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  608. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  610. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  612. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  613. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  615. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  616. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  617. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  618. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  619. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  621. package/contracts/components/Component.sol +0 -241
  622. package/contracts/components/IComponent.sol +0 -74
  623. package/contracts/components/IDistributionComponent.sol +0 -71
  624. package/contracts/components/IPoolComponent.sol +0 -113
  625. package/contracts/components/IProductComponent.sol +0 -40
  626. package/contracts/components/Pool.sol +0 -299
  627. package/contracts/components/Product.sol +0 -293
  628. package/contracts/instance/InstanceAccessManager.sol +0 -297
  629. package/contracts/instance/base/ComponentService.sol +0 -134
  630. package/contracts/instance/base/KeyValueStore.sol +0 -175
  631. package/contracts/instance/base/Lifecycle.sol +0 -109
  632. package/contracts/instance/module/ISetup.sol +0 -33
  633. package/contracts/instance/module/ITreasury.sol +0 -23
  634. package/contracts/instance/service/ApplicationService.sol +0 -350
  635. package/contracts/instance/service/BundleService.sol +0 -336
  636. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  637. package/contracts/instance/service/ClaimService.sol +0 -151
  638. package/contracts/instance/service/DistributionService.sol +0 -450
  639. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  640. package/contracts/instance/service/IBundleService.sol +0 -62
  641. package/contracts/instance/service/IClaimService.sol +0 -61
  642. package/contracts/instance/service/IPolicyService.sol +0 -72
  643. package/contracts/instance/service/IPoolService.sol +0 -35
  644. package/contracts/instance/service/IProductService.sol +0 -40
  645. package/contracts/instance/service/PolicyService.sol +0 -403
  646. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  647. package/contracts/instance/service/PoolService.sol +0 -163
  648. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  649. package/contracts/instance/service/ProductService.sol +0 -233
  650. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  651. package/contracts/registry/RegistryAccessManager.sol +0 -216
  652. package/contracts/registry/ReleaseManager.sol +0 -322
  653. package/contracts/shared/ContractDeployerLib.sol +0 -72
  654. package/contracts/test/TestFee.sol +0 -25
  655. package/contracts/test/TestRegisterable.sol +0 -18
  656. package/contracts/test/TestRoleId.sol +0 -14
  657. package/contracts/test/TestService.sol +0 -25
  658. package/contracts/test/TestToken.sol +0 -26
  659. package/contracts/test/TestVersion.sol +0 -44
  660. package/contracts/test/TestVersionable.sol +0 -17
  661. package/contracts/types/ChainId.sol +0 -38
  662. package/contracts/types/NumberId.sol +0 -52
  663. package/contracts/types/ObjectType.sol +0 -157
  664. package/contracts/types/RoleId.sol +0 -95
  665. package/contracts/types/Seconds.sol +0 -54
  666. /package/contracts/{types → type}/DistributorType.sol +0 -0
  667. /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
+ }