@etherisc/gif-next 0.0.2-c9711ab-345 → 0.0.2-c9ad04b-284

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 (351) hide show
  1. package/README.md +4 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +21 -21
  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/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  14. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  16. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +42 -248
  18. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  20. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -222
  22. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +129 -286
  24. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +53 -120
  26. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -37
  28. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -62
  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 +71 -71
  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 +225 -68
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +34 -146
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +30 -81
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +220 -102
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  61. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  63. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  65. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  71. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  72. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +32 -238
  74. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  75. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  76. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  77. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -37
  79. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -222
  82. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -144
  84. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +29 -80
  86. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  87. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +5 -227
  88. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  89. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  90. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  91. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +76 -235
  92. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +51 -110
  94. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +0 -31
  96. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +5 -42
  98. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +63 -78
  100. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  101. package/artifacts/contracts/pool/Pool.sol/Pool.json +5 -227
  102. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +101 -332
  104. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +32 -135
  106. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  107. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +31 -162
  108. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +26 -89
  110. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  111. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -225
  112. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  113. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  114. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  115. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +185 -175
  116. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +53 -100
  118. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  120. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  122. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +120 -140
  124. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  126. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  127. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -37
  128. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  129. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  130. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  131. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +184 -380
  132. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +44 -111
  134. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  135. package/artifacts/contracts/product/PricingService.sol/PricingService.json +113 -270
  136. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +52 -123
  138. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  139. package/artifacts/contracts/product/Product.sol/Product.json +3 -225
  140. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  141. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  142. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  144. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  145. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  146. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  147. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +221 -21
  148. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  149. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  150. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  151. package/artifacts/contracts/registry/Registry.sol/Registry.json +419 -82
  152. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  153. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +229 -114
  154. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -130
  156. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  157. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +22 -73
  158. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  159. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  160. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
  162. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  164. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  166. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  167. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  168. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  169. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +84 -212
  170. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +55 -114
  172. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  173. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -112
  174. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  176. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
  179. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  180. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  181. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +0 -42
  184. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  188. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  189. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  190. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  191. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -222
  192. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  193. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  195. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  196. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  198. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
  200. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  202. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  203. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  204. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  205. package/artifacts/contracts/shared/Service.sol/Service.json +0 -112
  206. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  207. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  208. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  209. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  210. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  211. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  212. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  213. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  214. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
  215. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  216. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
  217. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  219. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +42 -89
  221. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  222. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  223. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  224. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -138
  225. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  226. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +26 -77
  227. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +84 -84
  229. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  230. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  231. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  232. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  236. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  238. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  240. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  241. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  243. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  244. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  245. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  247. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  249. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  251. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  253. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  255. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  257. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  259. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  263. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  266. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  270. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  271. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  272. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +14 -65
  273. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  274. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  275. package/contracts/authorization/AccessAdmin.sol +1 -3
  276. package/contracts/authorization/Authorization.sol +0 -1
  277. package/contracts/distribution/Distribution.sol +1 -1
  278. package/contracts/distribution/DistributionService.sol +26 -27
  279. package/contracts/distribution/IDistributionService.sol +9 -5
  280. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  281. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  282. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  283. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  284. package/contracts/instance/IInstance.sol +7 -30
  285. package/contracts/instance/Instance.sol +10 -35
  286. package/contracts/instance/InstanceAdmin.sol +23 -4
  287. package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
  288. package/contracts/instance/InstanceReader.sol +24 -7
  289. package/contracts/instance/InstanceService.sol +60 -36
  290. package/contracts/instance/InstanceStore.sol +11 -1
  291. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  292. package/contracts/instance/module/IComponents.sol +1 -1
  293. package/contracts/instance/module/IPolicy.sol +22 -22
  294. package/contracts/oracle/Oracle.sol +2 -1
  295. package/contracts/oracle/OracleService.sol +4 -3
  296. package/contracts/pool/BundleService.sol +13 -26
  297. package/contracts/pool/IBundleService.sol +2 -3
  298. package/contracts/pool/IPoolService.sol +29 -18
  299. package/contracts/pool/Pool.sol +15 -17
  300. package/contracts/pool/PoolService.sol +45 -98
  301. package/contracts/product/ApplicationService.sol +41 -23
  302. package/contracts/product/BasicProduct.sol +1 -0
  303. package/contracts/product/ClaimService.sol +116 -46
  304. package/contracts/product/IApplicationService.sol +1 -0
  305. package/contracts/product/IClaimService.sol +28 -5
  306. package/contracts/product/IPolicyService.sol +21 -32
  307. package/contracts/product/IPricingService.sol +7 -7
  308. package/contracts/product/IProductComponent.sol +0 -1
  309. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  310. package/contracts/product/PolicyService.sol +230 -186
  311. package/contracts/product/PricingService.sol +44 -43
  312. package/contracts/product/Product.sol +50 -36
  313. package/contracts/product/{ProductService.sol → RiskService.sol} +5 -7
  314. package/contracts/product/{ProductServiceManager.sol → RiskServiceManager.sol} +8 -8
  315. package/contracts/registry/ChainNft.sol +65 -32
  316. package/contracts/registry/IRegistry.sol +49 -15
  317. package/contracts/registry/Registry.sol +321 -195
  318. package/contracts/registry/RegistryAdmin.sol +150 -51
  319. package/contracts/registry/RegistryService.sol +2 -2
  320. package/contracts/registry/ReleaseRegistry.sol +12 -6
  321. package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
  322. package/contracts/shared/Component.sol +17 -29
  323. package/contracts/shared/ComponentService.sol +16 -26
  324. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  325. package/contracts/shared/IComponent.sol +4 -4
  326. package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
  327. package/contracts/shared/IPolicyHolder.sol +0 -9
  328. package/contracts/shared/InitializableERC165.sol +2 -2
  329. package/contracts/shared/InstanceLinkedComponent.sol +4 -4
  330. package/contracts/shared/NftOwnable.sol +5 -5
  331. package/contracts/shared/PolicyHolder.sol +5 -48
  332. package/contracts/shared/Registerable.sol +4 -4
  333. package/contracts/shared/RegistryLinked.sol +3 -2
  334. package/contracts/shared/Service.sol +5 -5
  335. package/contracts/shared/TokenHandler.sol +100 -19
  336. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  337. package/contracts/staking/IStaking.sol +2 -1
  338. package/contracts/staking/StakeManagerLib.sol +18 -25
  339. package/contracts/staking/Staking.sol +10 -28
  340. package/contracts/staking/StakingService.sol +10 -14
  341. package/contracts/staking/TargetManagerLib.sol +7 -3
  342. package/contracts/type/ObjectType.sol +15 -11
  343. package/contracts/type/Seconds.sol +8 -0
  344. package/contracts/type/StateId.sol +1 -0
  345. package/contracts/upgradeability/ProxyManager.sol +1 -1
  346. package/package.json +1 -1
  347. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  348. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  349. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  350. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  351. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
@@ -7,7 +7,7 @@ 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";
@@ -40,11 +40,11 @@ contract ClaimService is
40
40
  address authority
41
41
  ) = abi.decode(data, (address, address, address));
42
42
 
43
- initializeService(registryAddress, authority, owner);
43
+ _initializeService(registryAddress, authority, owner);
44
44
 
45
45
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
46
46
 
47
- registerInterface(type(IClaimService).interfaceId);
47
+ _registerInterface(type(IClaimService).interfaceId);
48
48
  }
49
49
 
50
50
  function submit(
@@ -67,6 +67,7 @@ contract ClaimService is
67
67
  revert ErrorClaimServicePolicyNotOpen(policyNftId);
68
68
  }
69
69
 
70
+ // TODO check claim amount > 0
70
71
  // check policy including this claim is still within sum insured
71
72
  if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
72
73
  revert ErrorClaimServiceClaimExceedsSumInsured(
@@ -80,14 +81,14 @@ contract ClaimService is
80
81
  instance.getInstanceStore().createClaim(
81
82
  policyNftId,
82
83
  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
84
+ IPolicy.ClaimInfo({
85
+ claimAmount: claimAmount,
86
+ paidAmount: AmountLib.zero(),
87
+ payoutsCount: 0,
88
+ openPayoutsCount: 0,
89
+ submissionData: claimData,
90
+ processData: "",
91
+ closedAt: TimestampLib.zero()}));
91
92
 
92
93
  // update and save policy info with instance
93
94
  policyInfo.claimsCount += 1;
@@ -114,12 +115,17 @@ contract ClaimService is
114
115
  IPolicy.PolicyInfo memory policyInfo
115
116
  ) = _verifyCallerWithPolicy(policyNftId);
116
117
 
118
+ // TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
119
+
117
120
  // check/update claim info
118
121
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
119
122
  claimInfo.claimAmount = confirmedAmount;
120
123
  claimInfo.processData = data;
121
124
  instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
122
125
 
126
+ // TODO test if claim results in total claim amount == sum insured amount
127
+ // should policy still be active it needs to automatically become expired
128
+
123
129
  // update and save policy info with instance
124
130
  policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
125
131
  instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
@@ -154,6 +160,34 @@ contract ClaimService is
154
160
  emit LogClaimServiceClaimDeclined(policyNftId, claimId);
155
161
  }
156
162
 
163
+
164
+ // TODO add test case
165
+ function revoke(
166
+ NftId policyNftId,
167
+ ClaimId claimId
168
+ )
169
+ external
170
+ virtual
171
+ {
172
+ (
173
+ IInstance instance,
174
+ InstanceReader instanceReader,
175
+ IPolicy.PolicyInfo memory policyInfo
176
+ ) = _verifyCallerWithPolicy(policyNftId);
177
+
178
+ // check/update claim info
179
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
180
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
181
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, REVOKED());
182
+
183
+ // update and save policy info with instance
184
+ policyInfo.openClaimsCount -= 1;
185
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
186
+
187
+ emit LogClaimServiceClaimRevoked(policyNftId, claimId);
188
+ }
189
+
190
+
157
191
  function close(
158
192
  NftId policyNftId,
159
193
  ClaimId claimId
@@ -191,6 +225,30 @@ contract ClaimService is
191
225
  instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
192
226
  }
193
227
 
228
+ // TODO add test
229
+ function createPayoutForBeneficiary(
230
+ NftId policyNftId,
231
+ ClaimId claimId,
232
+ Amount amount,
233
+ address beneficiary,
234
+ bytes memory data
235
+ )
236
+ external
237
+ virtual
238
+ returns (PayoutId payoutId)
239
+ {
240
+ if (beneficiary == address(0)) {
241
+ revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
242
+ }
243
+
244
+ return _createPayout(
245
+ policyNftId,
246
+ claimId,
247
+ amount,
248
+ beneficiary,
249
+ data);
250
+ }
251
+
194
252
 
195
253
  function createPayout(
196
254
  NftId policyNftId,
@@ -199,6 +257,26 @@ contract ClaimService is
199
257
  bytes memory data
200
258
  )
201
259
  external
260
+ virtual
261
+ returns (PayoutId payoutId)
262
+ {
263
+ return _createPayout(
264
+ policyNftId,
265
+ claimId,
266
+ amount,
267
+ address(0), // defaults to owner of policy nft
268
+ data);
269
+ }
270
+
271
+ function _createPayout(
272
+ NftId policyNftId,
273
+ ClaimId claimId,
274
+ Amount amount,
275
+ address beneficiary,
276
+ bytes memory data
277
+ )
278
+ internal
279
+ virtual
202
280
  returns (PayoutId payoutId)
203
281
  {
204
282
  (
@@ -221,11 +299,12 @@ contract ClaimService is
221
299
  instance.getInstanceStore().createPayout(
222
300
  policyNftId,
223
301
  payoutId,
224
- IPolicy.PayoutInfo(
225
- payoutId.toClaimId(),
226
- amount,
227
- data,
228
- TimestampLib.zero()));
302
+ IPolicy.PayoutInfo({
303
+ claimId: payoutId.toClaimId(),
304
+ amount: amount,
305
+ beneficiary: beneficiary,
306
+ data: data,
307
+ paidAt: TimestampLib.zero()}));
229
308
 
230
309
  // update and save claim info with instance
231
310
  claimInfo.payoutsCount += 1;
@@ -293,20 +372,28 @@ contract ClaimService is
293
372
  // transfer payout token and fee
294
373
  (
295
374
  Amount netPayoutAmount,
375
+ Amount processingFeeAmount,
296
376
  address beneficiary
297
- ) = _transferPayoutAmount(
377
+ ) = _calculatePayoutAmount(
298
378
  instanceReader,
299
379
  policyNftId,
300
380
  policyInfo,
301
381
  payoutInfo);
302
382
 
303
- // TODO callback IPolicyHolder
383
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
304
384
 
305
- emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
385
+ {
386
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
387
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
388
+ poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
389
+
390
+ // TODO add 2nd token tx if processingFeeAmount > 0
391
+ }
392
+
393
+ // TODO callback IPolicyHolder
306
394
  }
307
395
 
308
- // TODO create (I)TreasuryService that deals with all gif related token transfers
309
- function _transferPayoutAmount(
396
+ function _calculatePayoutAmount(
310
397
  InstanceReader instanceReader,
311
398
  NftId policyNftId,
312
399
  IPolicy.PolicyInfo memory policyInfo,
@@ -315,6 +402,7 @@ contract ClaimService is
315
402
  internal
316
403
  returns (
317
404
  Amount netPayoutAmount,
405
+ Amount processingFeeAmount,
318
406
  address beneficiary
319
407
  )
320
408
  {
@@ -328,40 +416,22 @@ contract ClaimService is
328
416
  IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
329
417
 
330
418
  netPayoutAmount = payoutAmount;
331
- beneficiary = _getBeneficiary(policyNftId, payoutInfo.claimId);
419
+
420
+ if (payoutInfo.beneficiary == address(0)) {
421
+ beneficiary = getRegistry().ownerOf(policyNftId);
422
+ } else {
423
+ beneficiary = payoutInfo.beneficiary;
424
+ }
332
425
 
333
426
  IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
334
427
  if(FeeLib.gtz(productInfo.processingFee)) {
335
- // TODO calculate net payout and processing fees
336
- // TODO transfer processing fees to product wallet
337
- // TODO inform product to update fee book keeping
428
+ // TODO calculate and set net payout and processing fees
338
429
  }
339
-
340
- // TODO: centralize token handling (issue #471)
341
- poolInfo.tokenHandler.transfer(
342
- poolInfo.wallet,
343
- beneficiary,
344
- netPayoutAmount);
345
430
  }
346
431
  }
347
432
 
348
433
  // internal functions
349
434
 
350
- function _getBeneficiary(
351
- NftId policyNftId,
352
- ClaimId claimId
353
- )
354
- internal
355
- returns (address beneficiary)
356
- {
357
- // TODO check if owner is IPolicyHolder
358
- // if so, obtain beneficiary from this contract
359
-
360
- // default beneficiary is policy nft owner
361
- beneficiary = getRegistry().ownerOf(policyNftId);
362
- }
363
-
364
-
365
435
  function _verifyCallerWithPolicy(
366
436
  NftId policyNftId
367
437
  )
@@ -24,6 +24,7 @@ interface IApplicationService is IService {
24
24
  address applicationOwner,
25
25
  RiskId riskId,
26
26
  Amount sumInsuredAmount,
27
+ Amount premiumAmount,
27
28
  Seconds lifetime,
28
29
  NftId bundleNftId,
29
30
  ReferralId referralId,
@@ -23,14 +23,17 @@ 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);
36
+ error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
34
37
 
35
38
  error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint8 openPayouts);
36
39
  error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
@@ -46,9 +49,6 @@ interface IClaimService is
46
49
  ) external returns (ClaimId claimId);
47
50
 
48
51
 
49
- // TODO add claim revoke functionality
50
-
51
-
52
52
  /// @dev declines the specified claim
53
53
  /// function can only be called by product, policy needs to match with calling product
54
54
  function decline(
@@ -58,6 +58,14 @@ interface IClaimService is
58
58
  ) external;
59
59
 
60
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
+
61
69
  /// @dev confirms the specified claim and specifies the payout amount
62
70
  /// function can only be called by product, policy needs to match with calling product
63
71
  function confirm(
@@ -76,7 +84,8 @@ interface IClaimService is
76
84
  ) external;
77
85
 
78
86
 
79
- /// @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
80
89
  /// returns the id of the newly created payout, this id is unique for the specified policy
81
90
  /// function can only be called by product, policy needs to match with calling product
82
91
  function createPayout(
@@ -89,6 +98,20 @@ interface IClaimService is
89
98
  returns (PayoutId payoutId);
90
99
 
91
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
+
92
115
  /// @dev processes the specified payout
93
116
  /// this includes moving the payout token to the beneficiary (default: policy holder)
94
117
  /// function can only be called by product, policy needs to match with calling product
@@ -1,41 +1,33 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRisk} from "../instance/module/IRisk.sol";
5
4
  import {IService} from "../shared/IService.sol";
6
5
 
7
6
  import {Amount} from "../type/Amount.sol";
8
- import {ClaimId} from "../type/ClaimId.sol";
9
7
  import {NftId} from "../type/NftId.sol";
10
- import {PayoutId} from "../type/PayoutId.sol";
11
- import {ReferralId} from "../type/Referral.sol";
12
- import {RiskId} from "../type/RiskId.sol";
13
- import {Seconds} from "../type/Seconds.sol";
14
8
  import {StateId} from "../type/StateId.sol";
15
9
  import {Timestamp} from "../type/Timestamp.sol";
16
- import {UFixed} from "../type/UFixed.sol";
17
- import {Fee} from "../type/Fee.sol";
18
10
 
19
11
  interface IPolicyService is IService {
20
12
 
21
13
  error ErrorPolicyServicePolicyProductMismatch(NftId applicationNftId, NftId expectedProductNftId, NftId actualProductNftId);
22
14
  error ErrorPolicyServicePolicyStateNotApplied(NftId applicationNftId);
23
- error ErrorPolicyServicePolicyStateNotCollateralizedOrApplied(NftId applicationNftId);
15
+ error ErrorPolicyServicePolicyStateNotCollateralized(NftId applicationNftId);
16
+ error ErrorPolicyServicePolicyAlreadyActivated(NftId policyNftId);
24
17
 
25
- error ErrorPolicyServicePremiumHigherThanExpected(Amount premiumExpectedAmount, Amount premiumToBePaidAmount);
26
18
  error ErrorPolicyServiceBalanceInsufficient(address policyOwner, uint256 premiumAmount, uint256 balance);
27
19
  error ErrorPolicyServiceAllowanceInsufficient(address policyOwner, address tokenHandler, uint256 premiumAmount, uint256 allowance);
28
20
 
29
- error ErrorIPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
30
- error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId, Amount premiumPaidAmount);
31
- error ErrorIPolicyServicePolicyNotActivated(NftId policyNftId);
32
- error ErrorIPolicyServicePolicyAlreadyClosed(NftId policyNftId);
33
- error ErrorIPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
34
- error ErrorPolicyServicePremiumNotFullyPaid(NftId policyNftId, Amount premiumAmount, Amount premiumPaidAmount);
35
- error ErrorIPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
36
- error ErrorIPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
37
- error ErrorIPolicyServicePolicyExpirationTooLate(NftId policyNftId, Timestamp upperLimit, Timestamp expiredAt);
38
- error ErrorIPolicyServicePolicyExpirationTooEarly(NftId policyNftId, Timestamp lowerLimit, Timestamp expiredAt);
21
+ error ErrorPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
22
+ error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId);
23
+ error ErrorPolicyServicePolicyNotActivated(NftId policyNftId);
24
+ error ErrorPolicyServicePolicyAlreadyClosed(NftId policyNftId);
25
+ error ErrorPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
26
+ error ErrorPolicyServicePremiumNotPaid(NftId policyNftId, Amount premiumAmount);
27
+ error ErrorPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
28
+ error ErrorPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
29
+ error ErrorPolicyServicePolicyExpirationTooLate(NftId policyNftId, Timestamp upperLimit, Timestamp expiredAt);
30
+ error ErrorPolicyServicePolicyExpirationTooEarly(NftId policyNftId, Timestamp lowerLimit, Timestamp expiredAt);
39
31
 
40
32
  error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
41
33
  error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
@@ -43,17 +35,14 @@ interface IPolicyService is IService {
43
35
  event LogPolicyServicePolicyDeclined(NftId policyNftId);
44
36
  event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp expiredAt);
45
37
 
46
- /// @dev collateralizes the policy represented by {policyNftId}
47
- /// sets the policy state to collateralized
48
- /// may set the policy state to activated and set the activation date
49
- /// optionally collects premiums and activates the policy.
50
- /// - premium payment is only attempted if requirePremiumPayment is set to true
51
- /// - activation is only done if activateAt is a non-zero timestamp
52
- /// an application can only be collateralized in applied state
53
- /// only the related product may collateralize an application
54
- function collateralize(
55
- NftId policyNftId,
56
- bool requirePremiumPayment,
38
+ /// @dev creates the policy from {applicationNftId}.
39
+ /// After successful completion of the function the policy can be referenced using the application NftId.
40
+ /// Locks the sum insured amount in the pool, but does not transfer tokens. Call collectPremium to transfer tokens.
41
+ /// Sets the policy state to collateralized.
42
+ /// Optionally activates the policy if activateAt is a non-zero timestamp.
43
+ /// only the related product may create a policy from an application
44
+ function createPolicy(
45
+ NftId applicationNftId,
57
46
  Timestamp activateAt
58
47
  ) external;
59
48
 
@@ -62,7 +51,7 @@ interface IPolicyService is IService {
62
51
  /// only the related product may decline an application
63
52
  function decline(NftId policyNftId) external;
64
53
 
65
- /// @dev collects the premium token for the specified policy
54
+ /// @dev collects the premium token for the specified policy (must be in COLLATERALIZED state)
66
55
  function collectPremium(NftId policyNftId, Timestamp activateAt) external;
67
56
 
68
57
  /// @dev activates the specified policy and sets the activation date in the policy metadata
@@ -16,12 +16,12 @@ interface IPricingService is IService
16
16
  error ErrorPricingServiceTargetWalletAmountsMismatch();
17
17
  error ErrorIPricingServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
18
18
  error ErrorIPricingServiceFeeCalculationMismatch(
19
- uint256 distributionFeeFixAmount,
20
- uint256 distributionFeeVarAmount,
21
- uint256 distributionOwnerFeeFixAmount,
22
- uint256 distributionOwnerFeeVarAmount,
23
- uint256 commissionAmount,
24
- uint256 discountAmount
19
+ Amount distributionFeeFixAmount,
20
+ Amount distributionFeeVarAmount,
21
+ Amount distributionOwnerFeeFixAmount,
22
+ Amount distributionOwnerFeeVarAmount,
23
+ Amount commissionAmount,
24
+ Amount discountAmount
25
25
  );
26
26
 
27
27
  function calculatePremium(
@@ -35,5 +35,5 @@ interface IPricingService is IService
35
35
  )
36
36
  external
37
37
  view
38
- returns (IPolicy.Premium memory premium);
38
+ returns (IPolicy.PremiumInfo memory premium);
39
39
  }
@@ -2,7 +2,6 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
- import {Fee} from "../type/Fee.sol";
6
5
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
7
6
  import {IComponents} from "../instance/module/IComponents.sol";
8
7
  import {NftId} from "../type/NftId.sol";
@@ -12,7 +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
- interface IProductService is IService {
15
+ interface IRiskService is IService {
16
16
 
17
17
  function createRisk(
18
18
  RiskId riskId,