@etherisc/gif-next 0.0.2-d408403-475 → 0.0.2-d437d8d-974

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