@etherisc/gif-next 0.0.2-98e9f45-792 → 0.0.2-998ff1b-277

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 (337) hide show
  1. package/README.md +1 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +33 -52
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +0 -19
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +30 -188
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -158
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +85 -192
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +84 -104
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -11
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  31. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  32. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  33. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  34. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  35. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  36. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  38. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  39. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  40. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +95 -98
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +89 -70
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -146
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +92 -217
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  58. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  61. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  63. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  69. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  70. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  71. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +20 -178
  72. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  73. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  74. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  75. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  76. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -11
  77. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -158
  80. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  82. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  84. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  85. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +5 -163
  86. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  87. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  88. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  89. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +81 -188
  90. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +82 -102
  92. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  94. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +5 -16
  95. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  96. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +0 -10
  97. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  98. package/artifacts/contracts/pool/Pool.sol/Pool.json +5 -163
  99. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +43 -160
  101. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -83
  103. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  104. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +31 -146
  105. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -81
  107. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  108. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +0 -158
  109. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  110. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  111. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  112. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +190 -175
  113. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -100
  115. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  116. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  117. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +98 -0
  118. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  119. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +83 -11
  120. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  122. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -11
  123. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  124. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  125. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  126. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +173 -189
  127. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +91 -95
  129. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/PricingService.sol/PricingService.json +55 -162
  131. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +68 -88
  133. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  134. package/artifacts/contracts/product/Product.sol/Product.json +0 -158
  135. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  136. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  137. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  139. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  140. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  141. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  142. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +221 -21
  143. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  144. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  145. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  146. package/artifacts/contracts/registry/Registry.sol/Registry.json +419 -82
  147. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  148. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +244 -132
  149. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  150. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -130
  151. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
  153. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  154. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  155. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  156. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
  157. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  158. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
  159. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  160. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  161. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  162. package/artifacts/contracts/shared/Component.sol/Component.json +0 -147
  163. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  164. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +75 -182
  165. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  166. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +89 -99
  167. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  168. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
  169. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  170. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  171. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -11
  175. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  176. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +14 -46
  180. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  184. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  185. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  186. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  187. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -158
  188. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  189. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  190. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  191. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  192. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  193. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  194. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -140
  195. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  196. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  197. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  198. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  199. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  200. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  201. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  202. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  203. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  204. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -1
  205. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  206. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  207. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +83 -30
  208. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  209. package/artifacts/contracts/staking/Staking.sol/Staking.json +77 -190
  210. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  211. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  212. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  213. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +73 -84
  214. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  215. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  216. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  218. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  219. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  220. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  221. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  222. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  223. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  224. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  225. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  226. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  227. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  228. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  229. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  230. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  231. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  233. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  241. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  245. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  248. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  252. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  253. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  254. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +39 -70
  255. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  256. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  257. package/contracts/authorization/AccessAdmin.sol +25 -24
  258. package/contracts/authorization/IAccessAdmin.sol +0 -1
  259. package/contracts/distribution/Distribution.sol +1 -1
  260. package/contracts/distribution/DistributionService.sol +8 -8
  261. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  262. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  263. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  264. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  265. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  266. package/contracts/instance/IInstance.sol +7 -30
  267. package/contracts/instance/Instance.sol +10 -35
  268. package/contracts/instance/InstanceAuthorizationV3.sol +1 -0
  269. package/contracts/instance/InstanceReader.sol +8 -0
  270. package/contracts/instance/InstanceService.sol +10 -11
  271. package/contracts/instance/InstanceServiceManager.sol +6 -7
  272. package/contracts/instance/InstanceStore.sol +0 -4
  273. package/contracts/instance/base/ObjectLifecycle.sol +2 -1
  274. package/contracts/instance/module/IComponents.sol +1 -1
  275. package/contracts/instance/module/IPolicy.sol +5 -5
  276. package/contracts/oracle/Oracle.sol +2 -1
  277. package/contracts/oracle/OracleService.sol +9 -6
  278. package/contracts/oracle/OracleServiceManager.sol +6 -6
  279. package/contracts/pool/BundleService.sol +8 -8
  280. package/contracts/pool/BundleServiceManager.sol +6 -6
  281. package/contracts/pool/Pool.sol +10 -10
  282. package/contracts/pool/PoolService.sol +5 -6
  283. package/contracts/pool/PoolServiceManager.sol +4 -4
  284. package/contracts/product/ApplicationService.sol +4 -6
  285. package/contracts/product/ApplicationServiceManager.sol +4 -4
  286. package/contracts/product/BasicProduct.sol +1 -0
  287. package/contracts/product/ClaimService.sol +201 -71
  288. package/contracts/product/ClaimServiceManager.sol +4 -4
  289. package/contracts/product/IClaimService.sol +27 -5
  290. package/contracts/product/IPolicyService.sol +9 -5
  291. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
  292. package/contracts/product/PolicyService.sol +103 -33
  293. package/contracts/product/PolicyServiceManager.sol +4 -4
  294. package/contracts/product/PricingService.sol +4 -5
  295. package/contracts/product/PricingServiceManager.sol +3 -3
  296. package/contracts/product/Product.sol +35 -16
  297. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  298. package/contracts/product/RiskServiceManager.sol +39 -0
  299. package/contracts/registry/ChainNft.sol +65 -32
  300. package/contracts/registry/IRegistry.sol +49 -15
  301. package/contracts/registry/Registry.sol +321 -195
  302. package/contracts/registry/RegistryAdmin.sol +140 -50
  303. package/contracts/registry/RegistryService.sol +2 -2
  304. package/contracts/registry/RegistryServiceManager.sol +2 -2
  305. package/contracts/registry/ReleaseRegistry.sol +12 -6
  306. package/contracts/shared/Component.sol +6 -6
  307. package/contracts/shared/ComponentService.sol +7 -7
  308. package/contracts/shared/ComponentServiceManager.sol +8 -5
  309. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  310. package/contracts/shared/ContractLib.sol +38 -0
  311. package/contracts/shared/IInstanceLinkedComponent.sol +0 -7
  312. package/contracts/shared/IPolicyHolder.sol +12 -22
  313. package/contracts/shared/InitializableERC165.sol +2 -2
  314. package/contracts/shared/InstanceLinkedComponent.sol +4 -4
  315. package/contracts/shared/NftOwnable.sol +5 -5
  316. package/contracts/shared/PolicyHolder.sol +12 -53
  317. package/contracts/shared/Registerable.sol +4 -4
  318. package/contracts/shared/RegistryLinked.sol +3 -2
  319. package/contracts/shared/Service.sol +16 -11
  320. package/contracts/staking/IStaking.sol +2 -1
  321. package/contracts/staking/StakeManagerLib.sol +18 -0
  322. package/contracts/staking/Staking.sol +6 -5
  323. package/contracts/staking/StakingManager.sol +8 -6
  324. package/contracts/staking/StakingService.sol +2 -2
  325. package/contracts/staking/StakingServiceManager.sol +2 -2
  326. package/contracts/staking/TargetManagerLib.sol +7 -3
  327. package/contracts/type/Seconds.sol +8 -0
  328. package/contracts/type/StateId.sol +1 -0
  329. package/contracts/upgradeability/ProxyManager.sol +67 -34
  330. package/contracts/upgradeability/Versionable.sol +2 -2
  331. package/package.json +1 -1
  332. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  333. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  334. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  335. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  336. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  337. package/contracts/product/ProductServiceManager.sol +0 -39
@@ -7,15 +7,17 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
7
7
  import {Amount, AmountLib} from "../type/Amount.sol";
8
8
  import {TimestampLib} from "../type/Timestamp.sol";
9
9
  import {ObjectType, CLAIM, PRODUCT, POOL} from "../type/ObjectType.sol";
10
- import {SUBMITTED, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
10
+ import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
11
11
  import {NftId} from "../type/NftId.sol";
12
12
  import {FeeLib} from "../type/Fee.sol";
13
13
  import {StateId} from "../type/StateId.sol";
14
14
  import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
15
15
  import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
16
16
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
17
+ import {ContractLib} from "../shared/ContractLib.sol";
17
18
  import {InstanceReader} from "../instance/InstanceReader.sol";
18
19
  import {IClaimService} from "./IClaimService.sol";
20
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
19
21
  import {IPoolService} from "../pool/IPoolService.sol";
20
22
 
21
23
 
@@ -35,16 +37,15 @@ contract ClaimService is
35
37
  initializer()
36
38
  {
37
39
  (
38
- address registryAddress,,
39
- //address managerAddress
40
+ address registryAddress,
40
41
  address authority
41
- ) = abi.decode(data, (address, address, address));
42
+ ) = abi.decode(data, (address, address));
42
43
 
43
- initializeService(registryAddress, authority, owner);
44
+ _initializeService(registryAddress, authority, owner);
44
45
 
45
46
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
46
47
 
47
- registerInterface(type(IClaimService).interfaceId);
48
+ _registerInterface(type(IClaimService).interfaceId);
48
49
  }
49
50
 
50
51
  function submit(
@@ -54,6 +55,7 @@ contract ClaimService is
54
55
  )
55
56
  external
56
57
  virtual
58
+ nonReentrant()
57
59
  returns (ClaimId claimId)
58
60
  {
59
61
  (
@@ -67,6 +69,7 @@ contract ClaimService is
67
69
  revert ErrorClaimServicePolicyNotOpen(policyNftId);
68
70
  }
69
71
 
72
+ // TODO check claim amount > 0
70
73
  // check policy including this claim is still within sum insured
71
74
  if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
72
75
  revert ErrorClaimServiceClaimExceedsSumInsured(
@@ -80,14 +83,14 @@ contract ClaimService is
80
83
  instance.getInstanceStore().createClaim(
81
84
  policyNftId,
82
85
  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
86
+ IPolicy.ClaimInfo({
87
+ claimAmount: claimAmount,
88
+ paidAmount: AmountLib.zero(),
89
+ payoutsCount: 0,
90
+ openPayoutsCount: 0,
91
+ submissionData: claimData,
92
+ processData: "",
93
+ closedAt: TimestampLib.zero()}));
91
94
 
92
95
  // update and save policy info with instance
93
96
  policyInfo.claimsCount += 1;
@@ -107,6 +110,7 @@ contract ClaimService is
107
110
  )
108
111
  external
109
112
  virtual
113
+ nonReentrant()
110
114
  {
111
115
  (
112
116
  IInstance instance,
@@ -114,19 +118,28 @@ contract ClaimService is
114
118
  IPolicy.PolicyInfo memory policyInfo
115
119
  ) = _verifyCallerWithPolicy(policyNftId);
116
120
 
121
+ // TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
122
+
117
123
  // check/update claim info
118
124
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
119
125
  claimInfo.claimAmount = confirmedAmount;
120
126
  claimInfo.processData = data;
121
127
  instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
122
128
 
129
+ // TODO test if claim results in total claim amount == sum insured amount
130
+ // should policy still be active it needs to automatically become expired
131
+
123
132
  // update and save policy info with instance
124
133
  policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
125
134
  instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
126
135
 
127
136
  emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
137
+
138
+ // callback to policy holder if applicable
139
+ _policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
128
140
  }
129
141
 
142
+
130
143
  function decline(
131
144
  NftId policyNftId,
132
145
  ClaimId claimId,
@@ -134,6 +147,7 @@ contract ClaimService is
134
147
  )
135
148
  external
136
149
  virtual
150
+ nonReentrant()
137
151
  {
138
152
  (
139
153
  IInstance instance,
@@ -154,12 +168,42 @@ contract ClaimService is
154
168
  emit LogClaimServiceClaimDeclined(policyNftId, claimId);
155
169
  }
156
170
 
171
+
172
+ // TODO add test case
173
+ function revoke(
174
+ NftId policyNftId,
175
+ ClaimId claimId
176
+ )
177
+ external
178
+ virtual
179
+ nonReentrant()
180
+ {
181
+ (
182
+ IInstance instance,
183
+ InstanceReader instanceReader,
184
+ IPolicy.PolicyInfo memory policyInfo
185
+ ) = _verifyCallerWithPolicy(policyNftId);
186
+
187
+ // check/update claim info
188
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
189
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
190
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, REVOKED());
191
+
192
+ // update and save policy info with instance
193
+ policyInfo.openClaimsCount -= 1;
194
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
195
+
196
+ emit LogClaimServiceClaimRevoked(policyNftId, claimId);
197
+ }
198
+
199
+
157
200
  function close(
158
201
  NftId policyNftId,
159
202
  ClaimId claimId
160
203
  )
161
204
  external
162
205
  virtual
206
+ nonReentrant()
163
207
  {
164
208
  (
165
209
  IInstance instance,
@@ -192,51 +236,48 @@ contract ClaimService is
192
236
  }
193
237
 
194
238
 
195
- function createPayout(
239
+ function createPayoutForBeneficiary(
196
240
  NftId policyNftId,
197
241
  ClaimId claimId,
198
242
  Amount amount,
243
+ address beneficiary,
199
244
  bytes memory data
200
245
  )
201
246
  external
247
+ virtual
248
+ nonReentrant()
202
249
  returns (PayoutId payoutId)
203
250
  {
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
251
+ if (beneficiary == address(0)) {
252
+ revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
253
+ }
216
254
 
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(
255
+ return _createPayout(
222
256
  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());
257
+ claimId,
258
+ amount,
259
+ beneficiary,
260
+ data);
261
+ }
234
262
 
235
- // update and save policy info with instance
236
- policyInfo.payoutAmount.add(amount);
237
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
238
263
 
239
- emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
264
+ function createPayout(
265
+ NftId policyNftId,
266
+ ClaimId claimId,
267
+ Amount amount,
268
+ bytes memory data
269
+ )
270
+ external
271
+ virtual
272
+ nonReentrant()
273
+ returns (PayoutId payoutId)
274
+ {
275
+ return _createPayout(
276
+ policyNftId,
277
+ claimId,
278
+ amount,
279
+ address(0), // defaults to owner of policy nft
280
+ data);
240
281
  }
241
282
 
242
283
 
@@ -246,6 +287,7 @@ contract ClaimService is
246
287
  )
247
288
  external
248
289
  virtual
290
+ nonReentrant()
249
291
  {
250
292
  (
251
293
  IInstance instance,
@@ -260,7 +302,6 @@ contract ClaimService is
260
302
  payoutInfo.paidAt = TimestampLib.blockTimestamp();
261
303
  instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
262
304
 
263
- // TODO update and save claim info with instance
264
305
  ClaimId claimId = payoutId.toClaimId();
265
306
  Amount payoutAmount = payoutInfo.amount;
266
307
  IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
@@ -293,6 +334,7 @@ contract ClaimService is
293
334
  // transfer payout token and fee
294
335
  (
295
336
  Amount netPayoutAmount,
337
+ Amount processingFeeAmount,
296
338
  address beneficiary
297
339
  ) = _calculatePayoutAmount(
298
340
  instanceReader,
@@ -300,17 +342,74 @@ contract ClaimService is
300
342
  policyInfo,
301
343
  payoutInfo);
302
344
 
303
- // TODO callback IPolicyHolder
304
-
305
- emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
345
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
306
346
 
307
347
  {
308
348
  NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
309
349
  IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
310
350
  poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
351
+
352
+ // TODO add 2nd token tx if processingFeeAmount > 0
311
353
  }
354
+
355
+ // callback to policy holder if applicable
356
+ _policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
357
+ }
358
+
359
+ // internal functions
360
+
361
+
362
+ function _createPayout(
363
+ NftId policyNftId,
364
+ ClaimId claimId,
365
+ Amount amount,
366
+ address beneficiary,
367
+ bytes memory data
368
+ )
369
+ internal
370
+ virtual
371
+ returns (PayoutId payoutId)
372
+ {
373
+ (
374
+ IInstance instance,
375
+ InstanceReader instanceReader,
376
+ IPolicy.PolicyInfo memory policyInfo
377
+ ) = _verifyCallerWithPolicy(policyNftId);
378
+
379
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
380
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
381
+
382
+ // TODO add checks
383
+ // claim needs to be open
384
+ // claim.paidAmount + amount <= claim.claimAmount
385
+
386
+ // check/update claim info
387
+ // create payout info with instance
388
+ uint8 claimNo = claimInfo.payoutsCount + 1;
389
+ payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
390
+ instance.getInstanceStore().createPayout(
391
+ policyNftId,
392
+ payoutId,
393
+ IPolicy.PayoutInfo({
394
+ claimId: payoutId.toClaimId(),
395
+ amount: amount,
396
+ beneficiary: beneficiary,
397
+ data: data,
398
+ paidAt: TimestampLib.zero()}));
399
+
400
+ // update and save claim info with instance
401
+ claimInfo.payoutsCount += 1;
402
+ claimInfo.openPayoutsCount += 1;
403
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
404
+
405
+ // update and save policy info with instance
406
+ policyInfo.payoutAmount.add(amount);
407
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
408
+
409
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
312
410
  }
313
411
 
412
+
314
413
  function _calculatePayoutAmount(
315
414
  InstanceReader instanceReader,
316
415
  NftId policyNftId,
@@ -320,6 +419,7 @@ contract ClaimService is
320
419
  internal
321
420
  returns (
322
421
  Amount netPayoutAmount,
422
+ Amount processingFeeAmount,
323
423
  address beneficiary
324
424
  )
325
425
  {
@@ -333,33 +433,20 @@ contract ClaimService is
333
433
  IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
334
434
 
335
435
  netPayoutAmount = payoutAmount;
336
- beneficiary = _getBeneficiary(policyNftId, payoutInfo.claimId);
436
+
437
+ if (payoutInfo.beneficiary == address(0)) {
438
+ beneficiary = getRegistry().ownerOf(policyNftId);
439
+ } else {
440
+ beneficiary = payoutInfo.beneficiary;
441
+ }
337
442
 
338
443
  IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
339
444
  if(FeeLib.gtz(productInfo.processingFee)) {
340
- // TODO calculate net payout and processing fees
341
- // TODO transfer processing fees to product wallet
342
- // TODO inform product to update fee book keeping
445
+ // TODO calculate and set net payout and processing fees
343
446
  }
344
447
  }
345
448
  }
346
449
 
347
- // internal functions
348
-
349
- function _getBeneficiary(
350
- NftId policyNftId,
351
- ClaimId claimId
352
- )
353
- internal
354
- returns (address beneficiary)
355
- {
356
- // TODO check if owner is IPolicyHolder
357
- // if so, obtain beneficiary from this contract
358
-
359
- // default beneficiary is policy nft owner
360
- beneficiary = getRegistry().ownerOf(policyNftId);
361
- }
362
-
363
450
 
364
451
  function _verifyCallerWithPolicy(
365
452
  NftId policyNftId
@@ -410,6 +497,49 @@ contract ClaimService is
410
497
  }
411
498
 
412
499
 
500
+ function _policyHolderClaimConfirmed(
501
+ NftId policyNftId,
502
+ ClaimId claimId,
503
+ Amount confirmedAmount
504
+ )
505
+ internal
506
+ {
507
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
508
+ if(address(policyHolder) != address(0)) {
509
+ policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
510
+ }
511
+ }
512
+
513
+
514
+ function _policyHolderPayoutExecuted(
515
+ NftId policyNftId,
516
+ PayoutId payoutId,
517
+ address beneficiary,
518
+ Amount payoutAmount
519
+ )
520
+ internal
521
+ {
522
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
523
+ if(address(policyHolder) != address(0)) {
524
+ policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
525
+ }
526
+ }
527
+
528
+
529
+ function _getPolicyHolder(NftId policyNftId)
530
+ internal
531
+ view
532
+ returns (IPolicyHolder policyHolder)
533
+ {
534
+ address policyHolderAddress = getRegistry().ownerOf(policyNftId);
535
+ policyHolder = IPolicyHolder(policyHolderAddress);
536
+
537
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
538
+ policyHolder = IPolicyHolder(address(0));
539
+ }
540
+ }
541
+
542
+
413
543
  function _getDomain() internal pure override returns(ObjectType) {
414
544
  return CLAIM();
415
545
  }
@@ -12,14 +12,14 @@ contract ClaimServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with service implementation
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
19
  ClaimService svc = new ClaimService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
23
  address(svc),
24
24
  data,
25
25
  salt);
@@ -23,14 +23,16 @@ interface IClaimService is
23
23
  event LogClaimServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
24
24
  event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
25
25
  event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
26
+ event LogClaimServiceClaimRevoked(NftId policyNftId, ClaimId claimId);
26
27
  event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
27
28
 
28
29
  event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
29
- event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount);
30
+ event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount, Amount processingFeeAmount);
30
31
 
31
32
  error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
32
33
  error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
33
34
  error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
35
+ error ErrorClaimServiceBeneficiaryIsZero(NftId policyNftId, ClaimId claimId);
34
36
  error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
35
37
 
36
38
  error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint8 openPayouts);
@@ -47,9 +49,6 @@ interface IClaimService is
47
49
  ) external returns (ClaimId claimId);
48
50
 
49
51
 
50
- // TODO add claim revoke functionality
51
-
52
-
53
52
  /// @dev declines the specified claim
54
53
  /// function can only be called by product, policy needs to match with calling product
55
54
  function decline(
@@ -59,6 +58,14 @@ interface IClaimService is
59
58
  ) external;
60
59
 
61
60
 
61
+ /// @dev revokes the specified claim
62
+ /// function can only be called by product, policy needs to match with calling product
63
+ function revoke(
64
+ NftId policyNftId,
65
+ ClaimId claimId
66
+ ) external;
67
+
68
+
62
69
  /// @dev confirms the specified claim and specifies the payout amount
63
70
  /// function can only be called by product, policy needs to match with calling product
64
71
  function confirm(
@@ -77,7 +84,8 @@ interface IClaimService is
77
84
  ) external;
78
85
 
79
86
 
80
- /// @dev creates a new payout for the specified claim
87
+ /// @dev Creates a new payout for the specified claim.
88
+ /// The beneficiary is the holder of the policy NFT
81
89
  /// returns the id of the newly created payout, this id is unique for the specified policy
82
90
  /// function can only be called by product, policy needs to match with calling product
83
91
  function createPayout(
@@ -90,6 +98,20 @@ interface IClaimService is
90
98
  returns (PayoutId payoutId);
91
99
 
92
100
 
101
+ /// @dev Creates a new payout for the specified claim and beneficiary.
102
+ /// returns the id of the newly created payout, this id is unique for the specified policy
103
+ /// function can only be called by product, policy needs to match with calling product
104
+ function createPayoutForBeneficiary(
105
+ NftId policyNftId,
106
+ ClaimId claimId,
107
+ Amount amount,
108
+ address beneficiary,
109
+ bytes memory data
110
+ )
111
+ external
112
+ returns (PayoutId payoutId);
113
+
114
+
93
115
  /// @dev processes the specified payout
94
116
  /// this includes moving the payout token to the beneficiary (default: policy holder)
95
117
  /// function can only be called by product, policy needs to match with calling product
@@ -10,6 +10,13 @@ import {Timestamp} from "../type/Timestamp.sol";
10
10
 
11
11
  interface IPolicyService is IService {
12
12
 
13
+ event LogPolicyServicePolicyCreated(NftId policyNftId, Amount premiumAmount, Timestamp activatedAt);
14
+ event LogPolicyServicePolicyDeclined(NftId policyNftId);
15
+ event LogPolicyServicePolicyPremiumCollected(NftId policyNftId, Amount premiumAmount);
16
+ event LogPolicyServicePolicyActivated(NftId policyNftId, Timestamp activatedAt);
17
+ event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp originalExpiredAt, Timestamp expiredAt);
18
+ event LogPolicyServicePolicyClosed(NftId policyNftId);
19
+
13
20
  error ErrorPolicyServicePolicyProductMismatch(NftId applicationNftId, NftId expectedProductNftId, NftId actualProductNftId);
14
21
  error ErrorPolicyServicePolicyStateNotApplied(NftId applicationNftId);
15
22
  error ErrorPolicyServicePolicyStateNotCollateralized(NftId applicationNftId);
@@ -19,11 +26,11 @@ interface IPolicyService is IService {
19
26
  error ErrorPolicyServiceAllowanceInsufficient(address policyOwner, address tokenHandler, uint256 premiumAmount, uint256 allowance);
20
27
 
21
28
  error ErrorPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
22
- error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId, Amount premiumPaidAmount);
29
+ error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId);
23
30
  error ErrorPolicyServicePolicyNotActivated(NftId policyNftId);
24
31
  error ErrorPolicyServicePolicyAlreadyClosed(NftId policyNftId);
25
32
  error ErrorPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
26
- error ErrorPolicyServicePremiumNotFullyPaid(NftId policyNftId, Amount premiumAmount, Amount premiumPaidAmount);
33
+ error ErrorPolicyServicePremiumNotPaid(NftId policyNftId, Amount premiumAmount);
27
34
  error ErrorPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
28
35
  error ErrorPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
29
36
  error ErrorPolicyServicePolicyExpirationTooLate(NftId policyNftId, Timestamp upperLimit, Timestamp expiredAt);
@@ -32,9 +39,6 @@ interface IPolicyService is IService {
32
39
  error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
33
40
  error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
34
41
 
35
- event LogPolicyServicePolicyDeclined(NftId policyNftId);
36
- event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp expiredAt);
37
-
38
42
  /// @dev creates the policy from {applicationNftId}.
39
43
  /// After successful completion of the function the policy can be referenced using the application NftId.
40
44
  /// Locks the sum insured amount in the pool, but does not transfer tokens. Call collectPremium to transfer tokens.
@@ -12,8 +12,7 @@ import {Timestamp} from "../type/Timestamp.sol";
12
12
  import {UFixed} from "../type/UFixed.sol";
13
13
  import {Fee} from "../type/Fee.sol";
14
14
 
15
- // TODO consider renaming to IRiskService
16
- interface IProductService is IService {
15
+ interface IRiskService is IService {
17
16
 
18
17
  function createRisk(
19
18
  RiskId riskId,