@etherisc/gif-next 0.0.2-782a7d8-939 → 0.0.2-782e47c-610

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 (497) hide show
  1. package/README.md +49 -4
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -450
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +286 -235
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +77 -108
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +91 -160
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +165 -47
  36. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  44. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +64 -84
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -45
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +62 -219
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +290 -141
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +189 -194
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -100
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +211 -266
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  80. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  81. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  82. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  84. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  86. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  88. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -37
  90. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +13 -0
  92. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -315
  94. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +63 -138
  96. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +44 -83
  98. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  100. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  102. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +429 -172
  104. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +119 -94
  106. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +218 -1
  108. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -290
  110. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +233 -100
  112. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  113. package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -576
  114. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +287 -250
  116. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +46 -89
  118. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +62 -164
  120. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +41 -96
  122. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  124. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  125. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  126. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  127. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +216 -169
  128. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +68 -103
  130. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  131. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +18 -0
  132. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +127 -0
  134. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +197 -119
  136. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +56 -43
  138. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -79
  140. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  141. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +15 -2
  142. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  143. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +269 -311
  144. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +64 -103
  146. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PricingService.sol/PricingService.json +130 -253
  148. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +58 -121
  150. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  151. package/artifacts/contracts/product/Product.sol/Product.json +35 -378
  152. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  153. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  154. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  156. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  158. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +246 -42
  160. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -183
  162. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/Registry.sol/Registry.json +460 -100
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  166. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1618 -170
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  168. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +48 -123
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -76
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  172. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  173. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  174. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  176. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  178. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  179. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  180. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +262 -184
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +72 -111
  185. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  186. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +10 -109
  187. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  189. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +166 -0
  191. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -37
  193. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  195. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  197. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +0 -42
  200. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
  204. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  206. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  208. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -275
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  210. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  211. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  214. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  218. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  222. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  223. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  224. package/artifacts/contracts/shared/Service.sol/Service.json +10 -109
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  226. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  227. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  228. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +49 -7
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +97 -101
  235. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  236. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -302
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +47 -110
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +85 -178
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +39 -98
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +201 -148
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +136 -2
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  287. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  289. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  297. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  301. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  302. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  303. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
  305. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  307. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  308. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  309. package/contracts/authorization/AccessAdmin.sol +589 -0
  310. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  311. package/contracts/authorization/Authorization.sol +217 -0
  312. package/contracts/authorization/IAccess.sol +48 -0
  313. package/contracts/authorization/IAccessAdmin.sol +136 -0
  314. package/contracts/authorization/IAuthorization.sol +54 -0
  315. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  316. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  317. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  318. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  319. package/contracts/distribution/BasicDistribution.sol +138 -0
  320. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  321. package/contracts/distribution/Distribution.sol +145 -111
  322. package/contracts/distribution/DistributionService.sol +83 -45
  323. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  324. package/contracts/distribution/IDistributionComponent.sol +25 -39
  325. package/contracts/distribution/IDistributionService.sol +23 -3
  326. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  327. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  328. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  329. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  330. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  331. package/contracts/instance/IInstance.sol +20 -39
  332. package/contracts/instance/IInstanceService.sol +34 -23
  333. package/contracts/instance/Instance.sol +110 -117
  334. package/contracts/instance/InstanceAdmin.sol +221 -267
  335. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  336. package/contracts/instance/InstanceReader.sol +56 -16
  337. package/contracts/instance/InstanceService.sol +192 -87
  338. package/contracts/instance/InstanceServiceManager.sol +2 -6
  339. package/contracts/instance/InstanceStore.sol +26 -20
  340. package/contracts/instance/base/BalanceStore.sol +11 -6
  341. package/contracts/instance/base/Cloneable.sol +2 -25
  342. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  343. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  344. package/contracts/instance/module/IBundle.sol +1 -1
  345. package/contracts/instance/module/IComponents.sol +1 -7
  346. package/contracts/instance/module/IDistribution.sol +0 -1
  347. package/contracts/instance/module/IPolicy.sol +22 -22
  348. package/contracts/mock/Dip.sol +1 -1
  349. package/contracts/oracle/BasicOracle.sol +48 -0
  350. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  351. package/contracts/oracle/IOracle.sol +16 -0
  352. package/contracts/oracle/IOracleComponent.sol +2 -1
  353. package/contracts/oracle/Oracle.sol +73 -51
  354. package/contracts/oracle/OracleService.sol +9 -7
  355. package/contracts/oracle/OracleServiceManager.sol +2 -5
  356. package/contracts/pool/BasicPool.sol +166 -0
  357. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  358. package/contracts/pool/BundleService.sol +210 -68
  359. package/contracts/pool/BundleServiceManager.sol +2 -5
  360. package/contracts/pool/IBundleService.sol +33 -5
  361. package/contracts/pool/IPoolComponent.sol +6 -60
  362. package/contracts/pool/IPoolService.sol +36 -26
  363. package/contracts/pool/Pool.sol +165 -138
  364. package/contracts/pool/PoolService.sol +171 -115
  365. package/contracts/pool/PoolServiceManager.sol +2 -5
  366. package/contracts/product/ApplicationService.sol +58 -64
  367. package/contracts/product/ApplicationServiceManager.sol +2 -2
  368. package/contracts/product/BasicProduct.sol +53 -0
  369. package/contracts/product/BasicProductAuthorization.sol +43 -0
  370. package/contracts/product/ClaimService.sol +125 -80
  371. package/contracts/product/ClaimServiceManager.sol +2 -2
  372. package/contracts/product/IApplicationService.sol +1 -0
  373. package/contracts/product/IClaimService.sol +28 -5
  374. package/contracts/product/IPolicyService.sol +27 -32
  375. package/contracts/product/IPricingService.sol +7 -7
  376. package/contracts/product/IProductComponent.sol +7 -10
  377. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  378. package/contracts/product/PolicyService.sol +285 -187
  379. package/contracts/product/PolicyServiceManager.sol +2 -5
  380. package/contracts/product/PricingService.sol +48 -48
  381. package/contracts/product/PricingServiceManager.sol +2 -5
  382. package/contracts/product/Product.sol +162 -114
  383. package/contracts/product/{ProductService.sol → RiskService.sol} +16 -43
  384. package/contracts/product/RiskServiceManager.sol +39 -0
  385. package/contracts/registry/ChainNft.sol +65 -32
  386. package/contracts/registry/IRegistry.sol +63 -19
  387. package/contracts/registry/IRegistryService.sol +6 -6
  388. package/contracts/registry/Registry.sol +333 -207
  389. package/contracts/registry/RegistryAdmin.sol +376 -149
  390. package/contracts/registry/RegistryService.sol +11 -25
  391. package/contracts/registry/RegistryServiceManager.sol +2 -7
  392. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  393. package/contracts/registry/ReleaseRegistry.sol +491 -0
  394. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  395. package/contracts/registry/TokenRegistry.sol +2 -2
  396. package/contracts/shared/Component.sol +30 -43
  397. package/contracts/shared/ComponentService.sol +103 -80
  398. package/contracts/shared/ComponentServiceManager.sol +2 -2
  399. package/contracts/shared/ComponentVerifyingService.sol +2 -2
  400. package/contracts/shared/IComponent.sol +4 -4
  401. package/contracts/shared/IComponentService.sol +15 -9
  402. package/contracts/shared/IInstanceLinkedComponent.sol +10 -7
  403. package/contracts/shared/IKeyValueStore.sol +1 -0
  404. package/contracts/shared/ILifecycle.sol +1 -2
  405. package/contracts/shared/IPolicyHolder.sol +0 -9
  406. package/contracts/shared/IService.sol +8 -1
  407. package/contracts/shared/InitializableCustom.sol +2 -2
  408. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  409. package/contracts/shared/InstanceLinkedComponent.sol +51 -23
  410. package/contracts/shared/KeyValueStore.sol +6 -2
  411. package/contracts/shared/Lifecycle.sol +16 -69
  412. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  413. package/contracts/shared/NftOwnable.sol +7 -7
  414. package/contracts/shared/PolicyHolder.sol +7 -53
  415. package/contracts/shared/Registerable.sol +4 -4
  416. package/contracts/shared/RegistryLinked.sol +3 -2
  417. package/contracts/shared/Service.sol +32 -27
  418. package/contracts/shared/TokenHandler.sol +100 -19
  419. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  420. package/contracts/staking/IStaking.sol +3 -3
  421. package/contracts/staking/IStakingService.sol +22 -11
  422. package/contracts/staking/StakeManagerLib.sol +70 -25
  423. package/contracts/staking/Staking.sol +84 -137
  424. package/contracts/staking/StakingLifecycle.sol +23 -0
  425. package/contracts/staking/StakingManager.sol +2 -6
  426. package/contracts/staking/StakingReader.sol +13 -17
  427. package/contracts/staking/StakingService.sol +68 -67
  428. package/contracts/staking/StakingServiceManager.sol +2 -3
  429. package/contracts/staking/StakingStore.sol +93 -60
  430. package/contracts/staking/TargetManagerLib.sol +7 -3
  431. package/contracts/type/Amount.sol +12 -5
  432. package/contracts/type/Blocknumber.sol +7 -1
  433. package/contracts/type/ObjectType.sol +171 -64
  434. package/contracts/type/Referral.sol +1 -0
  435. package/contracts/type/RoleId.sol +103 -75
  436. package/contracts/type/Seconds.sol +21 -1
  437. package/contracts/type/Selector.sol +102 -0
  438. package/contracts/type/StateId.sol +1 -0
  439. package/contracts/type/String.sol +53 -0
  440. package/contracts/type/Timestamp.sol +11 -1
  441. package/contracts/type/UFixed.sol +34 -9
  442. package/contracts/type/Version.sol +3 -1
  443. package/contracts/{shared → upgradeability}/ProxyManager.sol +4 -5
  444. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  445. package/package.json +6 -4
  446. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  447. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  448. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  449. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  450. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  451. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  452. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  453. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  454. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -679
  455. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  456. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -694
  457. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  458. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
  459. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  460. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  461. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  462. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  463. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  464. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  465. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  466. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  467. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  468. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  469. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  470. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  471. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  472. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  473. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  474. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  475. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  476. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  477. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  478. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  479. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  480. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  481. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  482. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  483. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  484. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  485. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  486. package/contracts/product/ProductServiceManager.sol +0 -42
  487. package/contracts/registry/ReleaseManager.sol +0 -600
  488. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  489. package/contracts/shared/AccessManagerCustom.sol +0 -736
  490. package/contracts/shared/AccessManagerExtended.sol +0 -470
  491. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  492. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  493. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  494. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  495. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  496. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  497. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -0,0 +1,53 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Fee} from "../type/Fee.sol";
5
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {Product} from "../product/Product.sol";
8
+
9
+ abstract contract BasicProduct is
10
+ Product
11
+ {
12
+
13
+ function setFees(
14
+ Fee memory productFee,
15
+ Fee memory processingFee
16
+ )
17
+ external
18
+ virtual
19
+ onlyOwner()
20
+ restricted()
21
+ {
22
+ _setFees(productFee, processingFee);
23
+ }
24
+
25
+ function _initializeBasicProduct(
26
+ address registry,
27
+ NftId instanceNftId,
28
+ IAuthorization authorization,
29
+ address initialOwner,
30
+ string memory name,
31
+ address token,
32
+ bool isInterceptor,
33
+ address pool,
34
+ address distribution
35
+ )
36
+ internal
37
+ virtual
38
+ onlyInitializing()
39
+ {
40
+ _initializeProduct(
41
+ registry,
42
+ instanceNftId,
43
+ authorization,
44
+ initialOwner,
45
+ name,
46
+ token,
47
+ isInterceptor,
48
+ pool,
49
+ distribution,
50
+ "", //registryData,
51
+ ""); // componentData
52
+ }
53
+ }
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Authorization} from "../authorization/Authorization.sol";
5
+ import {BasicProduct} from "./BasicProduct.sol";
6
+ import {PRODUCT} from "../type/ObjectType.sol";
7
+ import {IAccess} from "../authorization/IAccess.sol";
8
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
9
+ import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
10
+ import {RoleId} from "../type/RoleId.sol";
11
+
12
+
13
+ contract BasicProductAuthorization
14
+ is Authorization
15
+ {
16
+
17
+ constructor(string memory componentName)
18
+ Authorization(componentName)
19
+ {}
20
+
21
+ function _setupTargets()
22
+ internal
23
+ virtual override
24
+ {
25
+ // basic component target
26
+ _addComponentTargetWithRole(PRODUCT());
27
+ }
28
+
29
+
30
+ function _setupTargetAuthorizations()
31
+ internal
32
+ virtual override
33
+ {
34
+ IAccess.FunctionInfo[] storage functions;
35
+
36
+ // authorize public role (open access to any account, only allows to lock target)
37
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
38
+ _authorize(functions, BasicProduct.setFees.selector, "setFees");
39
+
40
+ _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
41
+ }
42
+ }
43
+
@@ -1,48 +1,22 @@
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
- import {IService} from "./IApplicationService.sol";
6
-
7
4
  import {IComponents} from "../instance/module/IComponents.sol";
8
- import {IRegistry} from "../registry/IRegistry.sol";
9
- import {IProductComponent} from "./IProductComponent.sol";
10
- import {Product} from "./Product.sol";
11
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
12
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
13
5
  import {IInstance} from "../instance/IInstance.sol";
14
6
  import {IPolicy} from "../instance/module/IPolicy.sol";
15
- import {IRisk} from "../instance/module/IRisk.sol";
16
- import {IBundle} from "../instance/module/IBundle.sol";
17
- import {IProductService} from "./IProductService.sol";
18
-
19
- import {TokenHandler} from "../shared/TokenHandler.sol";
20
-
21
- import {IVersionable} from "../shared/IVersionable.sol";
22
- import {Versionable} from "../shared/Versionable.sol";
23
-
24
7
  import {Amount, AmountLib} from "../type/Amount.sol";
25
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
26
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
27
- import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
28
- import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, CLAIM, BUNDLE} from "../type/ObjectType.sol";
29
- import {SUBMITTED, ACTIVE, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
30
- import {NftId, NftIdLib} from "../type/NftId.sol";
31
- import {Fee, FeeLib} from "../type/Fee.sol";
32
- import {ReferralId} from "../type/Referral.sol";
33
- import {RiskId} from "../type/RiskId.sol";
8
+ import {TimestampLib} from "../type/Timestamp.sol";
9
+ import {ObjectType, CLAIM, PRODUCT, POOL} from "../type/ObjectType.sol";
10
+ import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {FeeLib} from "../type/Fee.sol";
34
13
  import {StateId} from "../type/StateId.sol";
35
14
  import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
36
15
  import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
37
- import {Version, VersionLib} from "../type/Version.sol";
38
-
39
16
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
40
17
  import {InstanceReader} from "../instance/InstanceReader.sol";
41
- import {IBundleService} from "../pool/IBundleService.sol";
42
18
  import {IClaimService} from "./IClaimService.sol";
43
19
  import {IPoolService} from "../pool/IPoolService.sol";
44
- import {IService} from "../shared/IService.sol";
45
- import {Service} from "../shared/Service.sol";
46
20
 
47
21
 
48
22
  contract ClaimService is
@@ -66,16 +40,11 @@ contract ClaimService is
66
40
  address authority
67
41
  ) = abi.decode(data, (address, address, address));
68
42
 
69
- initializeService(registryAddress, authority, owner);
43
+ _initializeService(registryAddress, authority, owner);
70
44
 
71
45
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
72
46
 
73
- registerInterface(type(IClaimService).interfaceId);
74
- }
75
-
76
-
77
- function getDomain() public pure override returns(ObjectType) {
78
- return CLAIM();
47
+ _registerInterface(type(IClaimService).interfaceId);
79
48
  }
80
49
 
81
50
  function submit(
@@ -98,6 +67,7 @@ contract ClaimService is
98
67
  revert ErrorClaimServicePolicyNotOpen(policyNftId);
99
68
  }
100
69
 
70
+ // TODO check claim amount > 0
101
71
  // check policy including this claim is still within sum insured
102
72
  if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
103
73
  revert ErrorClaimServiceClaimExceedsSumInsured(
@@ -111,14 +81,14 @@ contract ClaimService is
111
81
  instance.getInstanceStore().createClaim(
112
82
  policyNftId,
113
83
  claimId,
114
- IPolicy.ClaimInfo(
115
- claimAmount,
116
- AmountLib.zero(), // paidAmount
117
- 0, // payoutsCount
118
- 0, // openPayoutsCount
119
- claimData, // claim submission data
120
- "", // claim processing data
121
- 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()}));
122
92
 
123
93
  // update and save policy info with instance
124
94
  policyInfo.claimsCount += 1;
@@ -145,12 +115,17 @@ contract ClaimService is
145
115
  IPolicy.PolicyInfo memory policyInfo
146
116
  ) = _verifyCallerWithPolicy(policyNftId);
147
117
 
118
+ // TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
119
+
148
120
  // check/update claim info
149
121
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
150
122
  claimInfo.claimAmount = confirmedAmount;
151
123
  claimInfo.processData = data;
152
124
  instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
153
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
+
154
129
  // update and save policy info with instance
155
130
  policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
156
131
  instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
@@ -185,6 +160,34 @@ contract ClaimService is
185
160
  emit LogClaimServiceClaimDeclined(policyNftId, claimId);
186
161
  }
187
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
+
188
191
  function close(
189
192
  NftId policyNftId,
190
193
  ClaimId claimId
@@ -222,6 +225,30 @@ contract ClaimService is
222
225
  instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
223
226
  }
224
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
+
225
252
 
226
253
  function createPayout(
227
254
  NftId policyNftId,
@@ -230,6 +257,26 @@ contract ClaimService is
230
257
  bytes memory data
231
258
  )
232
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
233
280
  returns (PayoutId payoutId)
234
281
  {
235
282
  (
@@ -252,11 +299,12 @@ contract ClaimService is
252
299
  instance.getInstanceStore().createPayout(
253
300
  policyNftId,
254
301
  payoutId,
255
- IPolicy.PayoutInfo(
256
- payoutId.toClaimId(),
257
- amount,
258
- data,
259
- TimestampLib.zero()));
302
+ IPolicy.PayoutInfo({
303
+ claimId: payoutId.toClaimId(),
304
+ amount: amount,
305
+ beneficiary: beneficiary,
306
+ data: data,
307
+ paidAt: TimestampLib.zero()}));
260
308
 
261
309
  // update and save claim info with instance
262
310
  claimInfo.payoutsCount += 1;
@@ -324,20 +372,28 @@ contract ClaimService is
324
372
  // transfer payout token and fee
325
373
  (
326
374
  Amount netPayoutAmount,
375
+ Amount processingFeeAmount,
327
376
  address beneficiary
328
- ) = _transferPayoutAmount(
377
+ ) = _calculatePayoutAmount(
329
378
  instanceReader,
330
379
  policyNftId,
331
380
  policyInfo,
332
381
  payoutInfo);
333
382
 
334
- // TODO callback IPolicyHolder
383
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
335
384
 
336
- 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
337
394
  }
338
395
 
339
- // TODO create (I)TreasuryService that deals with all gif related token transfers
340
- function _transferPayoutAmount(
396
+ function _calculatePayoutAmount(
341
397
  InstanceReader instanceReader,
342
398
  NftId policyNftId,
343
399
  IPolicy.PolicyInfo memory policyInfo,
@@ -346,6 +402,7 @@ contract ClaimService is
346
402
  internal
347
403
  returns (
348
404
  Amount netPayoutAmount,
405
+ Amount processingFeeAmount,
349
406
  address beneficiary
350
407
  )
351
408
  {
@@ -359,39 +416,22 @@ contract ClaimService is
359
416
  IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
360
417
 
361
418
  netPayoutAmount = payoutAmount;
362
- beneficiary = _getBeneficiary(policyNftId, payoutInfo.claimId);
419
+
420
+ if (payoutInfo.beneficiary == address(0)) {
421
+ beneficiary = getRegistry().ownerOf(policyNftId);
422
+ } else {
423
+ beneficiary = payoutInfo.beneficiary;
424
+ }
363
425
 
364
426
  IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
365
427
  if(FeeLib.gtz(productInfo.processingFee)) {
366
- // TODO calculate net payout and processing fees
367
- // TODO transfer processing fees to product wallet
368
- // TODO inform product to update fee book keeping
428
+ // TODO calculate and set net payout and processing fees
369
429
  }
370
-
371
- poolInfo.tokenHandler.transfer(
372
- poolInfo.wallet,
373
- beneficiary,
374
- netPayoutAmount);
375
430
  }
376
431
  }
377
432
 
378
433
  // internal functions
379
434
 
380
- function _getBeneficiary(
381
- NftId policyNftId,
382
- ClaimId claimId
383
- )
384
- internal
385
- returns (address beneficiary)
386
- {
387
- // TODO check if owner is IPolicyHolder
388
- // if so, obtain beneficiary from this contract
389
-
390
- // default beneficiary is policy nft owner
391
- beneficiary = getRegistry().ownerOf(policyNftId);
392
- }
393
-
394
-
395
435
  function _verifyCallerWithPolicy(
396
436
  NftId policyNftId
397
437
  )
@@ -439,4 +479,9 @@ contract ClaimService is
439
479
  // get claim info
440
480
  claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
441
481
  }
482
+
483
+
484
+ function _getDomain() internal pure override returns(ObjectType) {
485
+ return CLAIM();
486
+ }
442
487
  }
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {ClaimService} from "./ClaimService.sol";
7
7
 
8
8
  contract ClaimServiceManager is ProxyManager {
@@ -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,54 +1,48 @@
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);
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);
37
31
 
38
32
  error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
39
33
  error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
40
34
 
41
- /// @dev collateralizes the policy represented by {policyNftId}
42
- /// sets the policy state to collateralized
43
- /// may set the policy state to activated and set the activation date
44
- /// optionally collects premiums and activates the policy.
45
- /// - premium payment is only attempted if requirePremiumPayment is set to true
46
- /// - activation is only done if activateAt is a non-zero timestamp
47
- /// an application can only be collateralized in applied state
48
- /// only the related product may collateralize an application
49
- function collateralize(
50
- NftId policyNftId,
51
- bool requirePremiumPayment,
35
+ event LogPolicyServicePolicyDeclined(NftId policyNftId);
36
+ event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp expiredAt);
37
+
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,
52
46
  Timestamp activateAt
53
47
  ) external;
54
48
 
@@ -57,18 +51,19 @@ interface IPolicyService is IService {
57
51
  /// only the related product may decline an application
58
52
  function decline(NftId policyNftId) external;
59
53
 
60
- /// @dev collects the premium token for the specified policy
54
+ /// @dev collects the premium token for the specified policy (must be in COLLATERALIZED state)
61
55
  function collectPremium(NftId policyNftId, Timestamp activateAt) external;
62
56
 
63
57
  /// @dev activates the specified policy and sets the activation date in the policy metadata
64
58
  /// to activate a policy it needs to be in underwritten state
65
59
  function activate(NftId policyNftId, Timestamp activateAt) external;
66
60
 
67
- /// @dev expires the specified policy and sets the expiry date in the policy metadata
61
+ /// @dev expires the specified policy and sets the expiry date in the policy metadata. If expiry date is set to 0, then the earliest possible expiry date (current blocktime) is set
68
62
  /// to expire a policy it must be in active state, policies may be expired even when the predefined expiry date is still in the future
69
63
  /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
70
64
  /// this function can only be called by a product. the policy needs to match with the calling product
71
- function expire(NftId policyNftId) external;
65
+ /// @return expiredAt the effective expiry date
66
+ function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
72
67
 
73
68
  /// @dev closes the specified policy and sets the closed data in the policy metadata
74
69
  /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
@@ -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
  }