@etherisc/gif-next 0.0.2-ce8407f-016 → 0.0.2-ce8fb44-591

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 (596) hide show
  1. package/README.md +197 -16
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1248 -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} +499 -549
  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 +1505 -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 +1191 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +900 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -0
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +643 -1
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +416 -3032
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1621 -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 +1049 -192
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1073 -30
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  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/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.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 +30 -112
  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/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  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 +1063 -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 +1477 -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 +1134 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +959 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1269 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -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/product/BasicProduct.sol/BasicProduct.json +1299 -0
  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 +1315 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -0
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/base/IService.sol/IService.json → product/IProductService.sol/IProductService.json} +145 -166
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -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 +1257 -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 +60 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +357 -59
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +557 -179
  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 +509 -164
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1741 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +698 -259
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +368 -123
  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/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.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 +4 -0
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  182. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  184. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  186. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  188. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  190. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  192. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  193. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  194. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  196. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  197. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  198. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  200. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  201. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  202. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  203. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +134 -29
  204. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  206. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  208. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  210. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  211. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +78 -87
  212. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  214. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  215. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  216. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  218. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  219. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  220. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  222. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  224. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  226. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  227. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +203 -164
  228. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  230. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  231. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  232. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  234. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  235. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  236. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  237. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  238. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  240. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  241. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  242. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  244. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  246. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  248. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  250. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  252. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  254. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  255. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  256. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  257. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  258. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  260. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  262. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  264. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  265. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  266. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  268. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  269. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  270. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  272. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  273. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  274. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  276. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  278. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  280. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  282. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  284. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  286. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  288. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  290. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  292. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  294. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  298. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  299. package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  300. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  302. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  303. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  304. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  306. package/contracts/authorization/AccessAdmin.sol +588 -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 +149 -0
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  318. package/contracts/distribution/Distribution.sol +283 -0
  319. package/contracts/distribution/DistributionService.sol +302 -0
  320. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  321. package/contracts/distribution/IDistributionComponent.sol +48 -0
  322. package/contracts/distribution/IDistributionService.sol +85 -0
  323. package/contracts/instance/BundleManager.sol +126 -0
  324. package/contracts/instance/IInstance.sol +81 -1
  325. package/contracts/instance/IInstanceService.sol +92 -0
  326. package/contracts/instance/Instance.sol +185 -323
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  329. package/contracts/instance/InstanceReader.sol +227 -57
  330. package/contracts/instance/InstanceService.sol +421 -23
  331. package/contracts/instance/InstanceServiceManager.sol +44 -0
  332. package/contracts/instance/InstanceStore.sol +276 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/base/Cloneable.sol +28 -0
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  337. package/contracts/instance/base/ObjectManager.sol +79 -0
  338. package/contracts/instance/module/IAccess.sol +30 -22
  339. package/contracts/instance/module/IBundle.sol +8 -7
  340. package/contracts/instance/module/IComponents.sol +52 -0
  341. package/contracts/instance/module/IDistribution.sol +7 -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} +5 -5
  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 +32 -0
  349. package/contracts/oracle/IOracleService.sol +65 -0
  350. package/contracts/oracle/Oracle.sol +157 -0
  351. package/contracts/oracle/OracleService.sol +278 -0
  352. package/contracts/oracle/OracleServiceManager.sol +42 -0
  353. package/contracts/pool/BasicPool.sol +164 -0
  354. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  355. package/contracts/pool/BundleService.sol +296 -0
  356. package/contracts/pool/BundleServiceManager.sol +42 -0
  357. package/contracts/pool/IBundleService.sol +106 -0
  358. package/contracts/pool/IPoolComponent.sol +52 -0
  359. package/contracts/pool/IPoolService.sol +150 -0
  360. package/contracts/pool/Pool.sol +311 -0
  361. package/contracts/pool/PoolService.sol +452 -0
  362. package/contracts/pool/PoolServiceManager.sol +42 -0
  363. package/contracts/product/ApplicationService.sol +254 -0
  364. package/contracts/product/ApplicationServiceManager.sol +38 -0
  365. package/contracts/product/BasicProduct.sol +82 -0
  366. package/contracts/product/BasicProductAuthorization.sol +40 -0
  367. package/contracts/product/ClaimService.sol +442 -0
  368. package/contracts/product/ClaimServiceManager.sol +38 -0
  369. package/contracts/product/IApplicationService.sol +62 -0
  370. package/contracts/product/IClaimService.sol +99 -0
  371. package/contracts/product/IPolicyService.sol +78 -0
  372. package/contracts/product/IPricingService.sol +39 -0
  373. package/contracts/product/IProductComponent.sol +39 -0
  374. package/contracts/product/IProductService.sol +33 -0
  375. package/contracts/product/PolicyService.sol +475 -0
  376. package/contracts/product/PolicyServiceManager.sol +42 -0
  377. package/contracts/product/PricingService.sol +300 -0
  378. package/contracts/product/PricingServiceManager.sol +42 -0
  379. package/contracts/product/Product.sol +392 -0
  380. package/contracts/product/ProductService.sol +124 -0
  381. package/contracts/product/ProductServiceManager.sol +42 -0
  382. package/contracts/registry/ChainNft.sol +55 -25
  383. package/contracts/registry/IRegistry.sol +77 -29
  384. package/contracts/registry/IRegistryService.sol +56 -16
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +412 -325
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +162 -265
  389. package/contracts/registry/RegistryServiceManager.sol +27 -17
  390. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  391. package/contracts/registry/ReleaseManager.sol +487 -0
  392. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  393. package/contracts/registry/TokenRegistry.sol +315 -0
  394. package/contracts/shared/Component.sol +281 -0
  395. package/contracts/shared/ComponentService.sol +581 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/shared/ERC165.sol +16 -10
  399. package/contracts/shared/IComponent.sol +70 -0
  400. package/contracts/shared/IComponentService.sol +102 -0
  401. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  402. package/contracts/{instance/base → shared}/IKeyValueStore.sol +20 -14
  403. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  404. package/contracts/shared/INftOwnable.sol +13 -12
  405. package/contracts/shared/IPolicyHolder.sol +45 -0
  406. package/contracts/shared/IRegisterable.sol +4 -6
  407. package/contracts/shared/IRegistryLinked.sol +11 -0
  408. package/contracts/shared/IService.sol +25 -0
  409. package/contracts/shared/IVersionable.sol +5 -48
  410. package/contracts/shared/InitializableCustom.sol +177 -0
  411. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  412. package/contracts/shared/KeyValueStore.sol +131 -0
  413. package/contracts/shared/Lifecycle.sol +77 -0
  414. package/contracts/shared/NftIdSetManager.sol +65 -0
  415. package/contracts/shared/NftOwnable.sol +60 -89
  416. package/contracts/shared/PolicyHolder.sol +102 -0
  417. package/contracts/shared/ProxyManager.sol +132 -27
  418. package/contracts/shared/Registerable.sol +27 -41
  419. package/contracts/shared/RegistryLinked.sol +43 -0
  420. package/contracts/shared/Service.sol +83 -0
  421. package/contracts/shared/TokenHandler.sol +39 -8
  422. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  423. package/contracts/shared/Versionable.sol +5 -93
  424. package/contracts/staking/IStaking.sol +168 -0
  425. package/contracts/staking/IStakingService.sol +153 -0
  426. package/contracts/staking/StakeManagerLib.sol +231 -0
  427. package/contracts/staking/Staking.sol +513 -0
  428. package/contracts/staking/StakingLifecycle.sol +23 -0
  429. package/contracts/staking/StakingManager.sol +54 -0
  430. package/contracts/staking/StakingReader.sol +187 -0
  431. package/contracts/staking/StakingService.sol +411 -0
  432. package/contracts/staking/StakingServiceManager.sol +44 -0
  433. package/contracts/staking/StakingStore.sol +615 -0
  434. package/contracts/staking/TargetManagerLib.sol +207 -0
  435. package/contracts/{types → type}/AddressSet.sol +1 -1
  436. package/contracts/type/Amount.sol +128 -0
  437. package/contracts/{types → type}/Blocknumber.sol +21 -3
  438. package/contracts/type/ClaimId.sol +75 -0
  439. package/contracts/{types → type}/DistributorType.sol +2 -2
  440. package/contracts/type/Fee.sol +66 -0
  441. package/contracts/{types → type}/NftId.sol +21 -15
  442. package/contracts/type/NftIdSet.sol +62 -0
  443. package/contracts/type/ObjectType.sol +275 -0
  444. package/contracts/type/PayoutId.sol +82 -0
  445. package/contracts/{types → type}/Referral.sol +5 -1
  446. package/contracts/type/RequestId.sol +75 -0
  447. package/contracts/{types → type}/RiskId.sol +1 -1
  448. package/contracts/type/RoleId.sol +174 -0
  449. package/contracts/type/Seconds.sol +81 -0
  450. package/contracts/type/Selector.sol +102 -0
  451. package/contracts/{types → type}/StateId.sol +38 -4
  452. package/contracts/type/String.sol +53 -0
  453. package/contracts/{types → type}/Timestamp.sol +23 -14
  454. package/contracts/type/UFixed.sol +332 -0
  455. package/contracts/{types → type}/Version.sol +6 -2
  456. package/package.json +11 -7
  457. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  458. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  460. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  462. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  464. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  465. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  466. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  468. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  469. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  470. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  472. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  475. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  477. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  479. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  482. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  484. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  486. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  488. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  490. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  491. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  492. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
  493. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  494. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  495. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  496. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  497. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  498. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  499. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  500. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -736
  501. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  502. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  503. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  504. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  505. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  506. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  507. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  508. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  509. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  510. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  511. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  512. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  513. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  514. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  515. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -10
  516. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  517. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  518. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  519. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  520. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  521. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  522. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  523. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  524. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  525. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  526. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  527. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  528. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  529. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  530. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  531. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  532. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  533. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  534. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  535. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  536. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  537. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  538. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  539. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  540. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  541. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  542. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  543. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  544. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  547. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  550. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  551. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  552. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  554. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  555. package/contracts/components/IBaseComponent.sol +0 -19
  556. package/contracts/experiment/errors/Require.sol +0 -38
  557. package/contracts/experiment/errors/Revert.sol +0 -44
  558. package/contracts/experiment/inheritance/A.sol +0 -53
  559. package/contracts/experiment/inheritance/B.sol +0 -28
  560. package/contracts/experiment/inheritance/C.sol +0 -34
  561. package/contracts/experiment/inheritance/IA.sol +0 -13
  562. package/contracts/experiment/inheritance/IB.sol +0 -10
  563. package/contracts/experiment/inheritance/IC.sol +0 -12
  564. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  565. package/contracts/experiment/statemachine/ISM.sol +0 -25
  566. package/contracts/experiment/statemachine/SM.sol +0 -57
  567. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  568. package/contracts/experiment/types/TypeA.sol +0 -47
  569. package/contracts/experiment/types/TypeB.sol +0 -29
  570. package/contracts/instance/AccessManagedSimple.sol +0 -114
  571. package/contracts/instance/AccessManagerSimple.sol +0 -682
  572. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  573. package/contracts/instance/InstanceAccessManager.sol +0 -288
  574. package/contracts/instance/base/IService.sol +0 -15
  575. package/contracts/instance/base/KeyValueStore.sol +0 -188
  576. package/contracts/instance/base/Lifecycle.sol +0 -100
  577. package/contracts/instance/base/ServiceBase.sol +0 -44
  578. package/contracts/instance/module/ISetup.sol +0 -41
  579. package/contracts/instance/module/ITreasury.sol +0 -23
  580. package/contracts/registry/IChainNft.sol +0 -22
  581. package/contracts/shared/ContractDeployerLib.sol +0 -72
  582. package/contracts/test/TestFee.sol +0 -25
  583. package/contracts/test/TestRegisterable.sol +0 -18
  584. package/contracts/test/TestRoleId.sol +0 -14
  585. package/contracts/test/TestService.sol +0 -26
  586. package/contracts/test/TestVersion.sol +0 -44
  587. package/contracts/test/TestVersionable.sol +0 -17
  588. package/contracts/test/Usdc.sol +0 -26
  589. package/contracts/types/ChainId.sol +0 -38
  590. package/contracts/types/Fee.sol +0 -56
  591. package/contracts/types/NftIdSet.sol +0 -60
  592. package/contracts/types/NumberId.sol +0 -52
  593. package/contracts/types/ObjectType.sol +0 -152
  594. package/contracts/types/RoleId.sol +0 -75
  595. package/contracts/types/UFixed.sol +0 -209
  596. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,442 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRisk} from "../instance/module/IRisk.sol";
5
+ import {IService} from "./IApplicationService.sol";
6
+
7
+ import {IComponents} from "../instance/module/IComponents.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IProductComponent} from "./IProductComponent.sol";
10
+ import {Product} from "./Product.sol";
11
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
12
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
13
+ import {IInstance} from "../instance/IInstance.sol";
14
+ import {IPolicy} from "../instance/module/IPolicy.sol";
15
+ import {IRisk} from "../instance/module/IRisk.sol";
16
+ import {IBundle} from "../instance/module/IBundle.sol";
17
+ import {IProductService} from "./IProductService.sol";
18
+
19
+ import {TokenHandler} from "../shared/TokenHandler.sol";
20
+
21
+ import {IVersionable} from "../shared/IVersionable.sol";
22
+ import {Versionable} from "../shared/Versionable.sol";
23
+
24
+ import {Amount, AmountLib} from "../type/Amount.sol";
25
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
26
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
27
+ import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
28
+ import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, CLAIM, BUNDLE} from "../type/ObjectType.sol";
29
+ import {SUBMITTED, ACTIVE, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
30
+ import {NftId, NftIdLib} from "../type/NftId.sol";
31
+ import {Fee, FeeLib} from "../type/Fee.sol";
32
+ import {ReferralId} from "../type/Referral.sol";
33
+ import {RiskId} from "../type/RiskId.sol";
34
+ import {StateId} from "../type/StateId.sol";
35
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
36
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
37
+ import {Version, VersionLib} from "../type/Version.sol";
38
+
39
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
40
+ import {InstanceReader} from "../instance/InstanceReader.sol";
41
+ import {IBundleService} from "../pool/IBundleService.sol";
42
+ import {IClaimService} from "./IClaimService.sol";
43
+ import {IPoolService} from "../pool/IPoolService.sol";
44
+ import {IService} from "../shared/IService.sol";
45
+ import {Service} from "../shared/Service.sol";
46
+
47
+
48
+ contract ClaimService is
49
+ ComponentVerifyingService,
50
+ IClaimService
51
+ {
52
+
53
+ IPoolService internal _poolService;
54
+
55
+ function _initialize(
56
+ address owner,
57
+ bytes memory data
58
+ )
59
+ internal
60
+ virtual override
61
+ initializer()
62
+ {
63
+ (
64
+ address registryAddress,,
65
+ //address managerAddress
66
+ address authority
67
+ ) = abi.decode(data, (address, address, address));
68
+
69
+ initializeService(registryAddress, authority, owner);
70
+
71
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
72
+
73
+ registerInterface(type(IClaimService).interfaceId);
74
+ }
75
+
76
+ function submit(
77
+ NftId policyNftId,
78
+ Amount claimAmount,
79
+ bytes memory claimData // claim submission data
80
+ )
81
+ external
82
+ virtual
83
+ returns (ClaimId claimId)
84
+ {
85
+ (
86
+ IInstance instance,
87
+ InstanceReader instanceReader,
88
+ IPolicy.PolicyInfo memory policyInfo
89
+ ) = _verifyCallerWithPolicy(policyNftId);
90
+
91
+ // check policy is in its active period
92
+ if(policyInfo.activatedAt.eqz() || TimestampLib.blockTimestamp() >= policyInfo.expiredAt) {
93
+ revert ErrorClaimServicePolicyNotOpen(policyNftId);
94
+ }
95
+
96
+ // check policy including this claim is still within sum insured
97
+ if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
98
+ revert ErrorClaimServiceClaimExceedsSumInsured(
99
+ policyNftId,
100
+ policyInfo.sumInsuredAmount,
101
+ AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
102
+ }
103
+
104
+ // create new claim
105
+ claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
106
+ instance.getInstanceStore().createClaim(
107
+ policyNftId,
108
+ claimId,
109
+ IPolicy.ClaimInfo(
110
+ claimAmount,
111
+ AmountLib.zero(), // paidAmount
112
+ 0, // payoutsCount
113
+ 0, // openPayoutsCount
114
+ claimData, // claim submission data
115
+ "", // claim processing data
116
+ TimestampLib.zero())); // closedAt
117
+
118
+ // update and save policy info with instance
119
+ policyInfo.claimsCount += 1;
120
+ policyInfo.openClaimsCount += 1;
121
+ // policy claim amount is only updated when claim is confirmed
122
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
123
+
124
+ emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
125
+ }
126
+
127
+
128
+ function confirm(
129
+ NftId policyNftId,
130
+ ClaimId claimId,
131
+ Amount confirmedAmount,
132
+ bytes memory data // claim processing data
133
+ )
134
+ external
135
+ virtual
136
+ {
137
+ (
138
+ IInstance instance,
139
+ InstanceReader instanceReader,
140
+ IPolicy.PolicyInfo memory policyInfo
141
+ ) = _verifyCallerWithPolicy(policyNftId);
142
+
143
+ // check/update claim info
144
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
145
+ claimInfo.claimAmount = confirmedAmount;
146
+ claimInfo.processData = data;
147
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
148
+
149
+ // update and save policy info with instance
150
+ policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
151
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
152
+
153
+ emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
154
+ }
155
+
156
+ function decline(
157
+ NftId policyNftId,
158
+ ClaimId claimId,
159
+ bytes memory data // claim processing data
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, SUBMITTED());
172
+ claimInfo.processData = data;
173
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
174
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, DECLINED());
175
+
176
+ // update and save policy info with instance
177
+ policyInfo.openClaimsCount -= 1;
178
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
179
+
180
+ emit LogClaimServiceClaimDeclined(policyNftId, claimId);
181
+ }
182
+
183
+ function close(
184
+ NftId policyNftId,
185
+ ClaimId claimId
186
+ )
187
+ external
188
+ virtual
189
+ {
190
+ (
191
+ IInstance instance,
192
+ InstanceReader instanceReader,
193
+ IPolicy.PolicyInfo memory policyInfo
194
+ ) = _verifyCallerWithPolicy(policyNftId);
195
+
196
+ // check/update claim info
197
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, CONFIRMED());
198
+
199
+ // check claim has no open payouts
200
+ if(claimInfo.openPayoutsCount > 0) {
201
+ revert ErrorClaimServiceClaimWithOpenPayouts(
202
+ policyNftId,
203
+ claimId,
204
+ claimInfo.openPayoutsCount);
205
+ }
206
+
207
+ // check claim paid amount matches with claim amount
208
+ if(claimInfo.paidAmount.toInt() < claimInfo.claimAmount.toInt()) {
209
+ revert ErrorClaimServiceClaimWithMissingPayouts(
210
+ policyNftId,
211
+ claimId,
212
+ claimInfo.claimAmount,
213
+ claimInfo.paidAmount);
214
+ }
215
+
216
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
217
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
218
+ }
219
+
220
+
221
+ function createPayout(
222
+ NftId policyNftId,
223
+ ClaimId claimId,
224
+ Amount amount,
225
+ bytes memory data
226
+ )
227
+ external
228
+ returns (PayoutId payoutId)
229
+ {
230
+ (
231
+ IInstance instance,
232
+ InstanceReader instanceReader,
233
+ IPolicy.PolicyInfo memory policyInfo
234
+ ) = _verifyCallerWithPolicy(policyNftId);
235
+
236
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
237
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
238
+
239
+ // TODO add checks
240
+ // claim needs to be open
241
+ // claim.paidAmount + amount <= claim.claimAmount
242
+
243
+ // check/update claim info
244
+ // create payout info with instance
245
+ uint8 claimNo = claimInfo.payoutsCount + 1;
246
+ payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
247
+ instance.getInstanceStore().createPayout(
248
+ policyNftId,
249
+ payoutId,
250
+ IPolicy.PayoutInfo(
251
+ payoutId.toClaimId(),
252
+ amount,
253
+ data,
254
+ TimestampLib.zero()));
255
+
256
+ // update and save claim info with instance
257
+ claimInfo.payoutsCount += 1;
258
+ claimInfo.openPayoutsCount += 1;
259
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
260
+
261
+ // update and save policy info with instance
262
+ policyInfo.payoutAmount.add(amount);
263
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
264
+
265
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
266
+ }
267
+
268
+
269
+ function processPayout(
270
+ NftId policyNftId,
271
+ PayoutId payoutId
272
+ )
273
+ external
274
+ virtual
275
+ {
276
+ (
277
+ IInstance instance,
278
+ InstanceReader instanceReader,
279
+ IPolicy.PolicyInfo memory policyInfo
280
+ ) = _verifyCallerWithPolicy(policyNftId);
281
+
282
+ // TODO add check that payout exists and is open
283
+ IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
284
+
285
+ // update and save payout info with instance
286
+ payoutInfo.paidAt = TimestampLib.blockTimestamp();
287
+ instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
288
+
289
+ // TODO update and save claim info with instance
290
+ ClaimId claimId = payoutId.toClaimId();
291
+ Amount payoutAmount = payoutInfo.amount;
292
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
293
+ claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
294
+ claimInfo.openPayoutsCount -= 1;
295
+
296
+ // check if this payout is closing the linked claim
297
+ // update claim and policy info accordingly
298
+ if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
299
+ claimInfo.closedAt == TimestampLib.blockTimestamp();
300
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
301
+
302
+ policyInfo.openClaimsCount -= 1;
303
+ } else {
304
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
305
+ }
306
+
307
+ // update and save policy info with instance
308
+ policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
309
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
310
+
311
+ // inform pool about payout
312
+ _poolService.reduceCollateral(
313
+ instance,
314
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
315
+ policyNftId,
316
+ policyInfo,
317
+ payoutAmount);
318
+
319
+ // transfer payout token and fee
320
+ (
321
+ Amount netPayoutAmount,
322
+ address beneficiary
323
+ ) = _transferPayoutAmount(
324
+ instanceReader,
325
+ policyNftId,
326
+ policyInfo,
327
+ payoutInfo);
328
+
329
+ // TODO callback IPolicyHolder
330
+
331
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
332
+ }
333
+
334
+ // TODO create (I)TreasuryService that deals with all gif related token transfers
335
+ function _transferPayoutAmount(
336
+ InstanceReader instanceReader,
337
+ NftId policyNftId,
338
+ IPolicy.PolicyInfo memory policyInfo,
339
+ IPolicy.PayoutInfo memory payoutInfo
340
+ )
341
+ internal
342
+ returns (
343
+ Amount netPayoutAmount,
344
+ address beneficiary
345
+ )
346
+ {
347
+ Amount payoutAmount = payoutInfo.amount;
348
+
349
+ if(payoutAmount.gtz()) {
350
+ NftId productNftId = policyInfo.productNftId;
351
+
352
+ // get pool component info from policy or product
353
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
354
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
355
+
356
+ netPayoutAmount = payoutAmount;
357
+ beneficiary = _getBeneficiary(policyNftId, payoutInfo.claimId);
358
+
359
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
360
+ if(FeeLib.gtz(productInfo.processingFee)) {
361
+ // TODO calculate net payout and processing fees
362
+ // TODO transfer processing fees to product wallet
363
+ // TODO inform product to update fee book keeping
364
+ }
365
+
366
+ poolInfo.tokenHandler.transfer(
367
+ poolInfo.wallet,
368
+ beneficiary,
369
+ netPayoutAmount);
370
+ }
371
+ }
372
+
373
+ // internal functions
374
+
375
+ function _getBeneficiary(
376
+ NftId policyNftId,
377
+ ClaimId claimId
378
+ )
379
+ internal
380
+ returns (address beneficiary)
381
+ {
382
+ // TODO check if owner is IPolicyHolder
383
+ // if so, obtain beneficiary from this contract
384
+
385
+ // default beneficiary is policy nft owner
386
+ beneficiary = getRegistry().ownerOf(policyNftId);
387
+ }
388
+
389
+
390
+ function _verifyCallerWithPolicy(
391
+ NftId policyNftId
392
+ )
393
+ internal
394
+ view
395
+ virtual
396
+ returns (
397
+ IInstance instance,
398
+ InstanceReader instanceReader,
399
+ IPolicy.PolicyInfo memory policyInfo
400
+ )
401
+ {
402
+ NftId productNftId;
403
+ (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
404
+ instanceReader = instance.getInstanceReader();
405
+
406
+ // check caller(product) policy match
407
+ policyInfo = instanceReader.getPolicyInfo(policyNftId);
408
+ if(policyInfo.productNftId != productNftId) {
409
+ revert ErrorClaimServicePolicyProductMismatch(policyNftId,
410
+ policyInfo.productNftId,
411
+ productNftId);
412
+ }
413
+ }
414
+
415
+ function _verifyClaim(
416
+ InstanceReader instanceReader,
417
+ NftId policyNftId,
418
+ ClaimId claimId,
419
+ StateId expectedState
420
+ )
421
+ internal
422
+ view
423
+ returns (
424
+ IPolicy.ClaimInfo memory claimInfo
425
+ )
426
+ {
427
+ // check claim is created state
428
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
429
+ if(claimState != expectedState) {
430
+ revert ErrorClaimServiceClaimNotInExpectedState(
431
+ policyNftId, claimId, expectedState, claimState);
432
+ }
433
+
434
+ // get claim info
435
+ claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
436
+ }
437
+
438
+
439
+ function _getDomain() internal pure override returns(ObjectType) {
440
+ return CLAIM();
441
+ }
442
+ }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/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,99 @@
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
+
35
+ error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint8 openPayouts);
36
+ error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
37
+ error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
38
+
39
+ /// @dev create a new claim for the specified policy
40
+ /// returns the id of the newly created claim
41
+ /// function can only be called by product, policy needs to match with calling product
42
+ function submit(
43
+ NftId policyNftId,
44
+ Amount claimAmount,
45
+ bytes memory claimData
46
+ ) external returns (ClaimId claimId);
47
+
48
+
49
+ // TODO add claim revoke functionality
50
+
51
+
52
+ /// @dev declines the specified claim
53
+ /// function can only be called by product, policy needs to match with calling product
54
+ function decline(
55
+ NftId policyNftId,
56
+ ClaimId claimId,
57
+ bytes memory data // claim processing data
58
+ ) external;
59
+
60
+
61
+ /// @dev confirms the specified claim and specifies the payout amount
62
+ /// function can only be called by product, policy needs to match with calling product
63
+ function confirm(
64
+ NftId policyNftId,
65
+ ClaimId claimId,
66
+ Amount confirmedAmount,
67
+ bytes memory data // claim processing data
68
+ ) external;
69
+
70
+
71
+ /// @dev closes the specified claim
72
+ /// function can only be called by product, policy needs to match with calling product
73
+ function close(
74
+ NftId policyNftId,
75
+ ClaimId claimId
76
+ ) external;
77
+
78
+
79
+ /// @dev creates a new payout for the specified claim
80
+ /// returns the id of the newly created payout, this id is unique for the specified policy
81
+ /// function can only be called by product, policy needs to match with calling product
82
+ function createPayout(
83
+ NftId policyNftId,
84
+ ClaimId claimId,
85
+ Amount amount,
86
+ bytes memory data
87
+ )
88
+ external
89
+ returns (PayoutId payoutId);
90
+
91
+
92
+ /// @dev processes the specified payout
93
+ /// this includes moving the payout token to the beneficiary (default: policy holder)
94
+ /// function can only be called by product, policy needs to match with calling product
95
+ function processPayout(
96
+ NftId policyNftId,
97
+ PayoutId payoutId
98
+ ) external;
99
+ }