@etherisc/gif-next 0.0.2-7b86057-523 → 0.0.2-7bf391b-976

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 (675) hide show
  1. package/README.md +56 -18
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -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 +1518 -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 +1196 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1557 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +854 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +943 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +945 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +237 -1565
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +369 -198
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +442 -2597
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +689 -377
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +506 -385
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +369 -108
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3469 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → oracle/IOracleComponent.sol/IOracleComponent.json} +246 -293
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1055 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1432 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1521 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +830 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +486 -263
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +342 -366
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1213 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1218 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1700 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +798 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → product/BasicProduct.sol/BasicProduct.json} +750 -218
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1339 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +826 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +211 -230
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +788 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +355 -305
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +270 -215
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +363 -327
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +126 -167
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1335 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +794 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1238 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +205 -19
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +226 -267
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +467 -35
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +506 -254
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -95
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +349 -82
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +858 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1712 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +178 -242
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components/Component.sol/Component.json → shared/IComponent.sol/IComponent.json} +192 -217
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → shared/IComponentService.sol/IComponentService.json} +559 -295
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +274 -185
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -30
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.json +84 -154
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +977 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +108 -35
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +131 -60
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +188 -157
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +107 -6
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  232. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  233. package/artifacts/contracts/staking/Staking.sol/Staking.json +1991 -0
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +773 -0
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  286. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  294. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  298. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  304. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  306. package/contracts/authorization/AccessAdmin.sol +591 -0
  307. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  308. package/contracts/authorization/Authorization.sol +218 -0
  309. package/contracts/authorization/IAccess.sol +48 -0
  310. package/contracts/authorization/IAccessAdmin.sol +136 -0
  311. package/contracts/authorization/IAuthorization.sol +54 -0
  312. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  313. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  314. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  316. package/contracts/distribution/BasicDistribution.sol +138 -0
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  318. package/contracts/distribution/Distribution.sol +295 -0
  319. package/contracts/distribution/DistributionService.sol +336 -0
  320. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  321. package/contracts/distribution/IDistributionComponent.sol +52 -0
  322. package/contracts/distribution/IDistributionService.sol +97 -0
  323. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +33 -32
  324. package/contracts/instance/IInstance.sol +61 -47
  325. package/contracts/instance/IInstanceService.sol +72 -21
  326. package/contracts/instance/Instance.sol +178 -193
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  329. package/contracts/instance/InstanceReader.sol +180 -65
  330. package/contracts/instance/InstanceService.sol +327 -319
  331. package/contracts/instance/InstanceServiceManager.sol +13 -27
  332. package/contracts/instance/InstanceStore.sol +277 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +104 -0
  337. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
  338. package/contracts/instance/module/IAccess.sol +19 -21
  339. package/contracts/instance/module/IBundle.sol +8 -8
  340. package/contracts/instance/module/IComponents.sol +46 -0
  341. package/contracts/instance/module/IDistribution.sol +6 -4
  342. package/contracts/instance/module/IPolicy.sol +56 -17
  343. package/contracts/instance/module/IRisk.sol +1 -1
  344. package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
  345. package/contracts/oracle/BasicOracle.sol +48 -0
  346. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  347. package/contracts/oracle/IOracle.sol +36 -0
  348. package/contracts/oracle/IOracleComponent.sol +33 -0
  349. package/contracts/oracle/IOracleService.sol +65 -0
  350. package/contracts/oracle/Oracle.sol +166 -0
  351. package/contracts/oracle/OracleService.sol +278 -0
  352. package/contracts/oracle/OracleServiceManager.sol +39 -0
  353. package/contracts/pool/BasicPool.sol +166 -0
  354. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  355. package/contracts/pool/BundleService.sol +450 -0
  356. package/contracts/pool/BundleServiceManager.sol +39 -0
  357. package/contracts/pool/IBundleService.sol +135 -0
  358. package/contracts/pool/IPoolComponent.sol +58 -0
  359. package/contracts/pool/IPoolService.sol +149 -0
  360. package/contracts/pool/Pool.sol +328 -0
  361. package/contracts/pool/PoolService.sol +559 -0
  362. package/contracts/pool/PoolServiceManager.sol +39 -0
  363. package/contracts/product/ApplicationService.sol +230 -0
  364. package/contracts/product/ApplicationServiceManager.sol +38 -0
  365. package/contracts/product/BasicProduct.sol +52 -0
  366. package/contracts/product/BasicProductAuthorization.sol +43 -0
  367. package/contracts/product/ClaimService.sol +424 -0
  368. package/contracts/product/ClaimServiceManager.sol +38 -0
  369. package/contracts/product/IApplicationService.sol +62 -0
  370. package/contracts/product/IClaimService.sol +100 -0
  371. package/contracts/product/IPolicyService.sol +85 -0
  372. package/contracts/product/IPricingService.sol +39 -0
  373. package/contracts/product/IProductComponent.sol +40 -0
  374. package/contracts/product/IProductService.sol +33 -0
  375. package/contracts/product/PolicyService.sol +556 -0
  376. package/contracts/product/PolicyServiceManager.sol +39 -0
  377. package/contracts/product/PricingService.sol +300 -0
  378. package/contracts/product/PricingServiceManager.sol +39 -0
  379. package/contracts/product/Product.sol +411 -0
  380. package/contracts/product/ProductService.sol +99 -0
  381. package/contracts/product/ProductServiceManager.sol +39 -0
  382. package/contracts/registry/ChainNft.sol +16 -1
  383. package/contracts/registry/IRegistry.sol +62 -26
  384. package/contracts/registry/IRegistryService.sol +47 -43
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +264 -140
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +105 -115
  389. package/contracts/registry/RegistryServiceManager.sol +24 -33
  390. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  391. package/contracts/registry/ReleaseRegistry.sol +485 -0
  392. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  393. package/contracts/registry/TokenRegistry.sol +263 -60
  394. package/contracts/shared/Component.sol +281 -0
  395. package/contracts/shared/ComponentService.sol +650 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/shared/IComponent.sol +71 -0
  399. package/contracts/shared/IComponentService.sol +108 -0
  400. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  401. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  402. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  403. package/contracts/shared/INftOwnable.sol +13 -12
  404. package/contracts/shared/IPolicyHolder.sol +45 -0
  405. package/contracts/shared/IRegisterable.sol +3 -3
  406. package/contracts/shared/IRegistryLinked.sol +11 -0
  407. package/contracts/shared/IService.sol +15 -6
  408. package/contracts/shared/InitializableCustom.sol +177 -0
  409. package/contracts/shared/InitializableERC165.sol +27 -0
  410. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  411. package/contracts/shared/KeyValueStore.sol +131 -0
  412. package/contracts/shared/Lifecycle.sol +77 -0
  413. package/contracts/shared/NftIdSet.sol +65 -0
  414. package/contracts/shared/NftOwnable.sol +59 -91
  415. package/contracts/shared/PolicyHolder.sol +99 -0
  416. package/contracts/shared/Registerable.sol +19 -30
  417. package/contracts/shared/RegistryLinked.sol +43 -0
  418. package/contracts/shared/Service.sol +54 -32
  419. package/contracts/shared/TokenHandler.sol +41 -6
  420. package/contracts/staking/IStaking.sol +167 -0
  421. package/contracts/staking/IStakingService.sol +160 -0
  422. package/contracts/staking/StakeManagerLib.sol +231 -0
  423. package/contracts/staking/Staking.sol +516 -0
  424. package/contracts/staking/StakingLifecycle.sol +23 -0
  425. package/contracts/staking/StakingManager.sol +50 -0
  426. package/contracts/staking/StakingReader.sol +183 -0
  427. package/contracts/staking/StakingService.sol +407 -0
  428. package/contracts/staking/StakingServiceManager.sol +44 -0
  429. package/contracts/staking/StakingStore.sol +605 -0
  430. package/contracts/staking/TargetManagerLib.sol +207 -0
  431. package/contracts/{types → type}/AddressSet.sol +1 -1
  432. package/contracts/type/Amount.sol +135 -0
  433. package/contracts/{types → type}/Blocknumber.sol +27 -3
  434. package/contracts/type/ClaimId.sol +75 -0
  435. package/contracts/{types → type}/DistributorType.sol +2 -2
  436. package/contracts/{types → type}/Fee.sol +33 -23
  437. package/contracts/{types → type}/NftId.sol +21 -15
  438. package/contracts/{types → type}/NftIdSet.sol +2 -2
  439. package/contracts/type/ObjectType.sol +271 -0
  440. package/contracts/type/PayoutId.sol +82 -0
  441. package/contracts/{types → type}/Referral.sol +6 -1
  442. package/contracts/type/RequestId.sol +75 -0
  443. package/contracts/{types → type}/RiskId.sol +1 -1
  444. package/contracts/type/RoleId.sol +174 -0
  445. package/contracts/type/Seconds.sol +93 -0
  446. package/contracts/type/Selector.sol +102 -0
  447. package/contracts/{types → type}/StateId.sol +34 -4
  448. package/contracts/type/String.sol +53 -0
  449. package/contracts/{types → type}/Timestamp.sol +34 -15
  450. package/contracts/{types → type}/UFixed.sol +35 -9
  451. package/contracts/{types → type}/Version.sol +5 -2
  452. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  453. package/contracts/upgradeability/ProxyManager.sol +198 -0
  454. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  455. package/contracts/upgradeability/Versionable.sol +59 -0
  456. package/package.json +10 -7
  457. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  458. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  459. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  460. package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -455
  461. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  462. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  463. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  464. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  465. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  468. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  469. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  470. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  472. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  474. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  476. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  478. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  480. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  482. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  484. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  486. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  489. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  491. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  493. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  494. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  496. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  498. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  500. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  502. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  503. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  504. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  505. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  506. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  507. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  508. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
  509. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  510. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  511. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  512. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  513. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  516. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  517. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  518. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  519. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  520. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1102
  522. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  523. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
  524. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  525. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
  526. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
  528. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
  535. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
  537. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
  539. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
  541. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
  543. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
  545. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  546. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  547. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  548. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  549. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  550. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  551. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  552. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  553. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  554. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  555. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  556. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -362
  557. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  558. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  559. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  560. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  561. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  562. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  563. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  564. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
  565. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  566. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  567. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  568. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
  569. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  570. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  571. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  572. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  573. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  574. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  575. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  576. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  577. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  578. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  579. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  581. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  582. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  583. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  585. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  587. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  588. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  589. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  590. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  591. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  592. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  593. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  594. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  595. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  596. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  597. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  598. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  599. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  601. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  603. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  606. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  608. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  610. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  612. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  614. package/contracts/components/Component.sol +0 -216
  615. package/contracts/components/Distribution.sol +0 -151
  616. package/contracts/components/IComponent.sol +0 -43
  617. package/contracts/components/IDistributionComponent.sol +0 -47
  618. package/contracts/components/IPoolComponent.sol +0 -60
  619. package/contracts/components/IProductComponent.sol +0 -39
  620. package/contracts/components/Pool.sol +0 -227
  621. package/contracts/components/Product.sol +0 -265
  622. package/contracts/experiment/cloning/Cloner.sol +0 -47
  623. package/contracts/experiment/errors/Require.sol +0 -38
  624. package/contracts/experiment/errors/Revert.sol +0 -44
  625. package/contracts/experiment/inheritance/A.sol +0 -53
  626. package/contracts/experiment/inheritance/B.sol +0 -28
  627. package/contracts/experiment/inheritance/C.sol +0 -34
  628. package/contracts/experiment/inheritance/IA.sol +0 -13
  629. package/contracts/experiment/inheritance/IB.sol +0 -10
  630. package/contracts/experiment/inheritance/IC.sol +0 -12
  631. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  632. package/contracts/experiment/statemachine/ISM.sol +0 -25
  633. package/contracts/experiment/statemachine/SM.sol +0 -57
  634. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  635. package/contracts/experiment/types/TypeA.sol +0 -47
  636. package/contracts/experiment/types/TypeB.sol +0 -29
  637. package/contracts/instance/InstanceAccessManager.sol +0 -298
  638. package/contracts/instance/base/ComponentService.sol +0 -134
  639. package/contracts/instance/base/KeyValueStore.sol +0 -172
  640. package/contracts/instance/base/Lifecycle.sol +0 -100
  641. package/contracts/instance/module/ISetup.sol +0 -46
  642. package/contracts/instance/module/ITreasury.sol +0 -23
  643. package/contracts/instance/service/BundleService.sol +0 -293
  644. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  645. package/contracts/instance/service/DistributionService.sol +0 -106
  646. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  647. package/contracts/instance/service/IBundleService.sol +0 -44
  648. package/contracts/instance/service/IDistributionService.sol +0 -12
  649. package/contracts/instance/service/IPolicyService.sol +0 -94
  650. package/contracts/instance/service/IPoolService.sol +0 -20
  651. package/contracts/instance/service/IProductService.sol +0 -40
  652. package/contracts/instance/service/PolicyService.sol +0 -538
  653. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  654. package/contracts/instance/service/PoolService.sol +0 -110
  655. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  656. package/contracts/instance/service/ProductService.sol +0 -233
  657. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  658. package/contracts/registry/RegistryAccessManager.sol +0 -216
  659. package/contracts/registry/ReleaseManager.sol +0 -332
  660. package/contracts/shared/ContractDeployerLib.sol +0 -72
  661. package/contracts/shared/ERC165.sol +0 -25
  662. package/contracts/shared/ProxyManager.sol +0 -94
  663. package/contracts/shared/Versionable.sol +0 -147
  664. package/contracts/test/TestFee.sol +0 -25
  665. package/contracts/test/TestRegisterable.sol +0 -18
  666. package/contracts/test/TestRoleId.sol +0 -14
  667. package/contracts/test/TestService.sol +0 -25
  668. package/contracts/test/TestVersion.sol +0 -44
  669. package/contracts/test/TestVersionable.sol +0 -17
  670. package/contracts/test/Usdc.sol +0 -26
  671. package/contracts/types/ChainId.sol +0 -38
  672. package/contracts/types/NumberId.sol +0 -52
  673. package/contracts/types/ObjectType.sol +0 -152
  674. package/contracts/types/RoleId.sol +0 -90
  675. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,424 @@
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, 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 {InstanceReader} from "../instance/InstanceReader.sol";
18
+ import {IClaimService} from "./IClaimService.sol";
19
+ import {IPoolService} from "../pool/IPoolService.sol";
20
+
21
+
22
+ contract ClaimService is
23
+ ComponentVerifyingService,
24
+ IClaimService
25
+ {
26
+
27
+ IPoolService internal _poolService;
28
+
29
+ function _initialize(
30
+ address owner,
31
+ bytes memory data
32
+ )
33
+ internal
34
+ virtual override
35
+ initializer()
36
+ {
37
+ (
38
+ address registryAddress,,
39
+ //address managerAddress
40
+ address authority
41
+ ) = abi.decode(data, (address, address, address));
42
+
43
+ initializeService(registryAddress, authority, owner);
44
+
45
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
46
+
47
+ registerInterface(type(IClaimService).interfaceId);
48
+ }
49
+
50
+ function submit(
51
+ NftId policyNftId,
52
+ Amount claimAmount,
53
+ bytes memory claimData // claim submission data
54
+ )
55
+ external
56
+ virtual
57
+ returns (ClaimId claimId)
58
+ {
59
+ (
60
+ IInstance instance,
61
+ InstanceReader instanceReader,
62
+ IPolicy.PolicyInfo memory policyInfo
63
+ ) = _verifyCallerWithPolicy(policyNftId);
64
+
65
+ // check policy is in its active period
66
+ if(policyInfo.activatedAt.eqz() || TimestampLib.blockTimestamp() >= policyInfo.expiredAt) {
67
+ revert ErrorClaimServicePolicyNotOpen(policyNftId);
68
+ }
69
+
70
+ // check policy including this claim is still within sum insured
71
+ if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
72
+ revert ErrorClaimServiceClaimExceedsSumInsured(
73
+ policyNftId,
74
+ policyInfo.sumInsuredAmount,
75
+ AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
76
+ }
77
+
78
+ // create new claim
79
+ claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
80
+ instance.getInstanceStore().createClaim(
81
+ policyNftId,
82
+ claimId,
83
+ IPolicy.ClaimInfo(
84
+ claimAmount,
85
+ AmountLib.zero(), // paidAmount
86
+ 0, // payoutsCount
87
+ 0, // openPayoutsCount
88
+ claimData, // claim submission data
89
+ "", // claim processing data
90
+ TimestampLib.zero())); // closedAt
91
+
92
+ // update and save policy info with instance
93
+ policyInfo.claimsCount += 1;
94
+ policyInfo.openClaimsCount += 1;
95
+ // policy claim amount is only updated when claim is confirmed
96
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
97
+
98
+ emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
99
+ }
100
+
101
+
102
+ function confirm(
103
+ NftId policyNftId,
104
+ ClaimId claimId,
105
+ Amount confirmedAmount,
106
+ bytes memory data // claim processing data
107
+ )
108
+ external
109
+ virtual
110
+ {
111
+ (
112
+ IInstance instance,
113
+ InstanceReader instanceReader,
114
+ IPolicy.PolicyInfo memory policyInfo
115
+ ) = _verifyCallerWithPolicy(policyNftId);
116
+
117
+ // check/update claim info
118
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
119
+ claimInfo.claimAmount = confirmedAmount;
120
+ claimInfo.processData = data;
121
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
122
+
123
+ // update and save policy info with instance
124
+ policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
125
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
126
+
127
+ emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
128
+ }
129
+
130
+ function decline(
131
+ NftId policyNftId,
132
+ ClaimId claimId,
133
+ bytes memory data // claim processing data
134
+ )
135
+ external
136
+ virtual
137
+ {
138
+ (
139
+ IInstance instance,
140
+ InstanceReader instanceReader,
141
+ IPolicy.PolicyInfo memory policyInfo
142
+ ) = _verifyCallerWithPolicy(policyNftId);
143
+
144
+ // check/update claim info
145
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
146
+ claimInfo.processData = data;
147
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
148
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, DECLINED());
149
+
150
+ // update and save policy info with instance
151
+ policyInfo.openClaimsCount -= 1;
152
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
153
+
154
+ emit LogClaimServiceClaimDeclined(policyNftId, claimId);
155
+ }
156
+
157
+ function close(
158
+ NftId policyNftId,
159
+ ClaimId claimId
160
+ )
161
+ external
162
+ virtual
163
+ {
164
+ (
165
+ IInstance instance,
166
+ InstanceReader instanceReader,
167
+ IPolicy.PolicyInfo memory policyInfo
168
+ ) = _verifyCallerWithPolicy(policyNftId);
169
+
170
+ // check/update claim info
171
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, CONFIRMED());
172
+
173
+ // check claim has no open payouts
174
+ if(claimInfo.openPayoutsCount > 0) {
175
+ revert ErrorClaimServiceClaimWithOpenPayouts(
176
+ policyNftId,
177
+ claimId,
178
+ claimInfo.openPayoutsCount);
179
+ }
180
+
181
+ // check claim paid amount matches with claim amount
182
+ if(claimInfo.paidAmount.toInt() < claimInfo.claimAmount.toInt()) {
183
+ revert ErrorClaimServiceClaimWithMissingPayouts(
184
+ policyNftId,
185
+ claimId,
186
+ claimInfo.claimAmount,
187
+ claimInfo.paidAmount);
188
+ }
189
+
190
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
191
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
192
+ }
193
+
194
+
195
+ function createPayout(
196
+ NftId policyNftId,
197
+ ClaimId claimId,
198
+ Amount amount,
199
+ bytes memory data
200
+ )
201
+ external
202
+ returns (PayoutId payoutId)
203
+ {
204
+ (
205
+ IInstance instance,
206
+ InstanceReader instanceReader,
207
+ IPolicy.PolicyInfo memory policyInfo
208
+ ) = _verifyCallerWithPolicy(policyNftId);
209
+
210
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
211
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
212
+
213
+ // TODO add checks
214
+ // claim needs to be open
215
+ // claim.paidAmount + amount <= claim.claimAmount
216
+
217
+ // check/update claim info
218
+ // create payout info with instance
219
+ uint8 claimNo = claimInfo.payoutsCount + 1;
220
+ payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
221
+ instance.getInstanceStore().createPayout(
222
+ policyNftId,
223
+ payoutId,
224
+ IPolicy.PayoutInfo(
225
+ payoutId.toClaimId(),
226
+ amount,
227
+ data,
228
+ TimestampLib.zero()));
229
+
230
+ // update and save claim info with instance
231
+ claimInfo.payoutsCount += 1;
232
+ claimInfo.openPayoutsCount += 1;
233
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
234
+
235
+ // update and save policy info with instance
236
+ policyInfo.payoutAmount.add(amount);
237
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
238
+
239
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
240
+ }
241
+
242
+
243
+ function processPayout(
244
+ NftId policyNftId,
245
+ PayoutId payoutId
246
+ )
247
+ external
248
+ virtual
249
+ {
250
+ (
251
+ IInstance instance,
252
+ InstanceReader instanceReader,
253
+ IPolicy.PolicyInfo memory policyInfo
254
+ ) = _verifyCallerWithPolicy(policyNftId);
255
+
256
+ // TODO add check that payout exists and is open
257
+ IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
258
+
259
+ // update and save payout info with instance
260
+ payoutInfo.paidAt = TimestampLib.blockTimestamp();
261
+ instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
262
+
263
+ // TODO update and save claim info with instance
264
+ ClaimId claimId = payoutId.toClaimId();
265
+ Amount payoutAmount = payoutInfo.amount;
266
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
267
+ claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
268
+ claimInfo.openPayoutsCount -= 1;
269
+
270
+ // check if this payout is closing the linked claim
271
+ // update claim and policy info accordingly
272
+ if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
273
+ claimInfo.closedAt == TimestampLib.blockTimestamp();
274
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
275
+
276
+ policyInfo.openClaimsCount -= 1;
277
+ } else {
278
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
279
+ }
280
+
281
+ // update and save policy info with instance
282
+ policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
283
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
284
+
285
+ // inform pool about payout
286
+ _poolService.reduceCollateral(
287
+ instance,
288
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
289
+ policyNftId,
290
+ policyInfo,
291
+ payoutAmount);
292
+
293
+ // transfer payout token and fee
294
+ (
295
+ Amount netPayoutAmount,
296
+ address beneficiary
297
+ ) = _calculatePayoutAmount(
298
+ instanceReader,
299
+ policyNftId,
300
+ policyInfo,
301
+ payoutInfo);
302
+
303
+ // TODO callback IPolicyHolder
304
+
305
+ if (netPayoutAmount.eqz()) {
306
+ revert ErrorClaimsServicePayoutAmountIsZero(policyNftId, payoutId);
307
+ }
308
+
309
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
310
+
311
+ {
312
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
313
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
314
+ // TODO: centralize token handling (issue #471)
315
+ poolInfo.tokenHandler.transfer(
316
+ poolInfo.wallet,
317
+ beneficiary,
318
+ netPayoutAmount);
319
+ }
320
+ }
321
+
322
+ function _calculatePayoutAmount(
323
+ InstanceReader instanceReader,
324
+ NftId policyNftId,
325
+ IPolicy.PolicyInfo memory policyInfo,
326
+ IPolicy.PayoutInfo memory payoutInfo
327
+ )
328
+ internal
329
+ returns (
330
+ Amount netPayoutAmount,
331
+ address beneficiary
332
+ )
333
+ {
334
+ Amount payoutAmount = payoutInfo.amount;
335
+
336
+ if(payoutAmount.gtz()) {
337
+ NftId productNftId = policyInfo.productNftId;
338
+
339
+ // get pool component info from policy or product
340
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
341
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
342
+
343
+ netPayoutAmount = payoutAmount;
344
+ beneficiary = _getBeneficiary(policyNftId, payoutInfo.claimId);
345
+
346
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
347
+ if(FeeLib.gtz(productInfo.processingFee)) {
348
+ // TODO calculate net payout and processing fees
349
+ // TODO transfer processing fees to product wallet
350
+ // TODO inform product to update fee book keeping
351
+ }
352
+ }
353
+ }
354
+
355
+ // internal functions
356
+
357
+ function _getBeneficiary(
358
+ NftId policyNftId,
359
+ ClaimId claimId
360
+ )
361
+ internal
362
+ returns (address beneficiary)
363
+ {
364
+ // TODO check if owner is IPolicyHolder
365
+ // if so, obtain beneficiary from this contract
366
+
367
+ // default beneficiary is policy nft owner
368
+ beneficiary = getRegistry().ownerOf(policyNftId);
369
+ }
370
+
371
+
372
+ function _verifyCallerWithPolicy(
373
+ NftId policyNftId
374
+ )
375
+ internal
376
+ view
377
+ virtual
378
+ returns (
379
+ IInstance instance,
380
+ InstanceReader instanceReader,
381
+ IPolicy.PolicyInfo memory policyInfo
382
+ )
383
+ {
384
+ NftId productNftId;
385
+ (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
386
+ instanceReader = instance.getInstanceReader();
387
+
388
+ // check caller(product) policy match
389
+ policyInfo = instanceReader.getPolicyInfo(policyNftId);
390
+ if(policyInfo.productNftId != productNftId) {
391
+ revert ErrorClaimServicePolicyProductMismatch(policyNftId,
392
+ policyInfo.productNftId,
393
+ productNftId);
394
+ }
395
+ }
396
+
397
+ function _verifyClaim(
398
+ InstanceReader instanceReader,
399
+ NftId policyNftId,
400
+ ClaimId claimId,
401
+ StateId expectedState
402
+ )
403
+ internal
404
+ view
405
+ returns (
406
+ IPolicy.ClaimInfo memory claimInfo
407
+ )
408
+ {
409
+ // check claim is created state
410
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
411
+ if(claimState != expectedState) {
412
+ revert ErrorClaimServiceClaimNotInExpectedState(
413
+ policyNftId, claimId, expectedState, claimState);
414
+ }
415
+
416
+ // get claim info
417
+ claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
418
+ }
419
+
420
+
421
+ function _getDomain() internal pure override returns(ObjectType) {
422
+ return CLAIM();
423
+ }
424
+ }
@@ -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,62 @@
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
+ Seconds lifetime,
28
+ NftId bundleNftId,
29
+ ReferralId referralId,
30
+ bytes memory applicationData
31
+ ) external returns (NftId applicationNftId);
32
+
33
+ /// @dev updates application attributes
34
+ /// may only be called while the application is in applied state
35
+ /// may only be called by the referenced product related to applicationNftId
36
+ function adjust(
37
+ NftId applicationNftId,
38
+ RiskId riskId,
39
+ NftId bundleNftId,
40
+ ReferralId referralId,
41
+ Amount sumInsuredAmount,
42
+ Seconds lifetime,
43
+ bytes memory applicationData
44
+ ) external;
45
+
46
+ /// @dev creates a new application that extends the provided policy
47
+ /// lifetime will seamlessly extend referenced policy, for closed policies
48
+ /// lifetime will start at underwriting time
49
+ /// product will need to limit the time window for renewal as underwriting
50
+ /// will lock the collateral at underwriting time which might be earlier than activation time
51
+ /// policyNftId needs to refer to an underwritten (or active or closed) policy
52
+ /// may only be called by the referenced product related to policyNftId
53
+ function renew(
54
+ NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
55
+ NftId bundleNftId // will likely need a newer bundle for underwriting
56
+ ) external returns (NftId applicationNftId);
57
+
58
+ /// @dev revokes the application represented by {policyNftId}
59
+ /// an application can only be revoked in applied state
60
+ /// only the application holder may revoke an application
61
+ function revoke(NftId policyNftId) external;
62
+ }
@@ -0,0 +1,100 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IInstance} from "../instance/IInstance.sol";
5
+ import {InstanceReader} from "../instance/InstanceReader.sol";
6
+ import {IService} from "../shared/IService.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {ClaimId} from "../type/ClaimId.sol";
10
+ import {PayoutId} from "../type/PayoutId.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {StateId} from "../type/StateId.sol";
13
+ import {Timestamp} from "../type/Timestamp.sol";
14
+ import {UFixed} from "../type/UFixed.sol";
15
+ import {Fee} from "../type/Fee.sol";
16
+
17
+ /// @dev gif service responsible for creating claims and payouts
18
+ /// only product components may call transaction functions
19
+ interface IClaimService is
20
+ IService
21
+ {
22
+
23
+ event LogClaimServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
24
+ event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
25
+ event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
26
+ event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
27
+
28
+ event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
29
+ event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount);
30
+
31
+ error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
32
+ error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
33
+ error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
34
+ error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
35
+
36
+ error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint8 openPayouts);
37
+ error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
38
+ error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
39
+
40
+ /// @dev create a new claim for the specified policy
41
+ /// returns the id of the newly created claim
42
+ /// function can only be called by product, policy needs to match with calling product
43
+ function submit(
44
+ NftId policyNftId,
45
+ Amount claimAmount,
46
+ bytes memory claimData
47
+ ) external returns (ClaimId claimId);
48
+
49
+
50
+ // TODO add claim revoke functionality
51
+
52
+
53
+ /// @dev declines the specified claim
54
+ /// function can only be called by product, policy needs to match with calling product
55
+ function decline(
56
+ NftId policyNftId,
57
+ ClaimId claimId,
58
+ bytes memory data // claim processing data
59
+ ) external;
60
+
61
+
62
+ /// @dev confirms the specified claim and specifies the payout amount
63
+ /// function can only be called by product, policy needs to match with calling product
64
+ function confirm(
65
+ NftId policyNftId,
66
+ ClaimId claimId,
67
+ Amount confirmedAmount,
68
+ bytes memory data // claim processing data
69
+ ) external;
70
+
71
+
72
+ /// @dev closes the specified claim
73
+ /// function can only be called by product, policy needs to match with calling product
74
+ function close(
75
+ NftId policyNftId,
76
+ ClaimId claimId
77
+ ) external;
78
+
79
+
80
+ /// @dev creates a new payout for the specified claim
81
+ /// returns the id of the newly created payout, this id is unique for the specified policy
82
+ /// function can only be called by product, policy needs to match with calling product
83
+ function createPayout(
84
+ NftId policyNftId,
85
+ ClaimId claimId,
86
+ Amount amount,
87
+ bytes memory data
88
+ )
89
+ external
90
+ returns (PayoutId payoutId);
91
+
92
+
93
+ /// @dev processes the specified payout
94
+ /// this includes moving the payout token to the beneficiary (default: policy holder)
95
+ /// function can only be called by product, policy needs to match with calling product
96
+ function processPayout(
97
+ NftId policyNftId,
98
+ PayoutId payoutId
99
+ ) external;
100
+ }