@etherisc/gif-next 0.0.2-def25d4-556 → 0.0.2-df73b56-462

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