@etherisc/gif-next 0.0.2-a3c2eef-755 → 0.0.2-a49c403-485

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 (453) hide show
  1. package/README.md +31 -5
  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/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
  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/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1518 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -266
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +269 -90
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +83 -55
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -132
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +103 -16
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +112 -139
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +88 -217
  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 +4 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  63. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  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/mock/Dip.sol/Dip.json +2 -2
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  75. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  77. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  79. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -0
  81. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -131
  84. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
  86. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
  88. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  89. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1432 -0
  90. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  92. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +455 -55
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +128 -40
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +193 -0
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -251
  100. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +188 -53
  102. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -390
  104. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -88
  106. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +60 -36
  108. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  110. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  112. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  113. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1280 -0
  114. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  116. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +143 -72
  118. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +66 -54
  120. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
  123. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  124. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +102 -6
  125. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  126. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  127. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -42
  128. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  129. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  130. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +304 -57
  131. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +103 -43
  133. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  134. package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
  135. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  136. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  137. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  138. package/artifacts/contracts/product/Product.sol/Product.json +32 -191
  139. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  141. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  143. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  144. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  145. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  146. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
  147. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  148. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  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 +101 -73
  152. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  153. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +234 -389
  154. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  156. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  157. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  158. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  159. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  160. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  162. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
  164. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  166. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  167. package/artifacts/contracts/shared/Component.sol/Component.json +0 -38
  168. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  169. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +326 -86
  170. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +89 -61
  172. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  176. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
  178. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  180. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  182. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  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 +4 -0
  189. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  190. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  191. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -91
  192. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  193. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  194. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  195. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  196. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  197. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  198. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  200. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  201. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  202. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  204. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  205. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  206. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  207. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  208. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +53 -6
  209. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +4 -0
  210. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +42 -0
  211. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  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 +42 -32
  215. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  216. package/artifacts/contracts/staking/Staking.sol/Staking.json +68 -82
  217. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  218. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  219. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +52 -40
  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 -26
  225. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  226. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  227. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
  229. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  230. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  231. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  232. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  233. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  235. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  237. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  239. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  241. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  243. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  244. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  245. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  247. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  248. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  249. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  251. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  253. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  255. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  257. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  259. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  261. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  263. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  265. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  267. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  269. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  271. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  273. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  275. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  277. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  279. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  281. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  282. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  283. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  284. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  285. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  286. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  287. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  288. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  289. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
  290. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  291. package/contracts/authorization/Authorization.sol +218 -0
  292. package/contracts/authorization/IAccess.sol +48 -0
  293. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  294. package/contracts/authorization/IAuthorization.sol +54 -0
  295. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  296. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
  297. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  298. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
  299. package/contracts/distribution/BasicDistribution.sol +138 -0
  300. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  301. package/contracts/distribution/Distribution.sol +144 -110
  302. package/contracts/distribution/DistributionService.sol +58 -32
  303. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  304. package/contracts/distribution/IDistributionComponent.sol +25 -39
  305. package/contracts/distribution/IDistributionService.sol +15 -1
  306. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  307. package/contracts/instance/IInstance.sol +8 -9
  308. package/contracts/instance/IInstanceService.sol +13 -18
  309. package/contracts/instance/Instance.sol +61 -70
  310. package/contracts/instance/InstanceAdmin.sol +202 -267
  311. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  312. package/contracts/instance/InstanceReader.sol +22 -9
  313. package/contracts/instance/InstanceService.sol +74 -70
  314. package/contracts/instance/InstanceServiceManager.sol +2 -6
  315. package/contracts/instance/InstanceStore.sol +13 -5
  316. package/contracts/instance/base/ObjectLifecycle.sol +104 -0
  317. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  318. package/contracts/instance/module/IBundle.sol +1 -1
  319. package/contracts/instance/module/IComponents.sol +0 -5
  320. package/contracts/instance/module/IDistribution.sol +0 -1
  321. package/contracts/instance/module/IPolicy.sol +1 -1
  322. package/contracts/mock/Dip.sol +1 -1
  323. package/contracts/oracle/BasicOracle.sol +48 -0
  324. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  325. package/contracts/oracle/IOracle.sol +16 -0
  326. package/contracts/oracle/IOracleComponent.sol +2 -1
  327. package/contracts/oracle/Oracle.sol +72 -51
  328. package/contracts/oracle/OracleServiceManager.sol +2 -5
  329. package/contracts/pool/BasicPool.sol +166 -0
  330. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  331. package/contracts/pool/BundleService.sol +157 -29
  332. package/contracts/pool/BundleServiceManager.sol +2 -5
  333. package/contracts/pool/IBundleService.sol +28 -3
  334. package/contracts/pool/IPoolComponent.sol +6 -60
  335. package/contracts/pool/IPoolService.sol +13 -13
  336. package/contracts/pool/Pool.sol +165 -136
  337. package/contracts/pool/PoolService.sol +126 -71
  338. package/contracts/pool/PoolServiceManager.sol +2 -5
  339. package/contracts/product/ApplicationService.sol +12 -36
  340. package/contracts/product/ApplicationServiceManager.sol +2 -2
  341. package/contracts/product/BasicProduct.sol +52 -0
  342. package/contracts/product/BasicProductAuthorization.sol +43 -0
  343. package/contracts/product/ClaimService.sol +14 -39
  344. package/contracts/product/ClaimServiceManager.sol +2 -2
  345. package/contracts/product/IClaimService.sol +1 -0
  346. package/contracts/product/IPolicyService.sol +13 -6
  347. package/contracts/product/IProductComponent.sol +7 -9
  348. package/contracts/product/PolicyService.sol +183 -99
  349. package/contracts/product/PolicyServiceManager.sol +2 -5
  350. package/contracts/product/PricingServiceManager.sol +2 -5
  351. package/contracts/product/Product.sol +122 -88
  352. package/contracts/product/ProductService.sol +7 -32
  353. package/contracts/product/ProductServiceManager.sol +2 -5
  354. package/contracts/registry/IRegistry.sol +26 -16
  355. package/contracts/registry/IRegistryService.sol +6 -6
  356. package/contracts/registry/Registry.sol +81 -87
  357. package/contracts/registry/RegistryAdmin.sol +118 -86
  358. package/contracts/registry/RegistryService.sol +4 -18
  359. package/contracts/registry/RegistryServiceManager.sol +2 -2
  360. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  361. package/contracts/registry/ReleaseRegistry.sol +485 -0
  362. package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
  363. package/contracts/registry/TokenRegistry.sol +2 -2
  364. package/contracts/shared/Component.sol +21 -21
  365. package/contracts/shared/ComponentService.sol +91 -68
  366. package/contracts/shared/ComponentServiceManager.sol +2 -2
  367. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  368. package/contracts/shared/IComponent.sol +4 -3
  369. package/contracts/shared/IComponentService.sol +15 -9
  370. package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
  371. package/contracts/shared/IKeyValueStore.sol +1 -0
  372. package/contracts/shared/ILifecycle.sol +1 -2
  373. package/contracts/shared/IService.sol +1 -1
  374. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  375. package/contracts/shared/InstanceLinkedComponent.sol +47 -19
  376. package/contracts/shared/KeyValueStore.sol +6 -2
  377. package/contracts/shared/Lifecycle.sol +16 -69
  378. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  379. package/contracts/shared/NftOwnable.sol +2 -2
  380. package/contracts/shared/PolicyHolder.sol +2 -5
  381. package/contracts/shared/Service.sol +3 -4
  382. package/contracts/shared/TokenHandler.sol +4 -0
  383. package/contracts/shared/TokenTransferLib.sol +60 -0
  384. package/contracts/staking/IStaking.sol +1 -2
  385. package/contracts/staking/IStakingService.sol +12 -5
  386. package/contracts/staking/Staking.sol +20 -17
  387. package/contracts/staking/StakingLifecycle.sol +23 -0
  388. package/contracts/staking/StakingManager.sol +2 -6
  389. package/contracts/staking/StakingReader.sol +12 -16
  390. package/contracts/staking/StakingService.sol +8 -12
  391. package/contracts/staking/StakingServiceManager.sol +2 -2
  392. package/contracts/staking/StakingStore.sol +15 -23
  393. package/contracts/type/Amount.sol +12 -5
  394. package/contracts/type/Blocknumber.sol +7 -1
  395. package/contracts/type/ObjectType.sol +37 -7
  396. package/contracts/type/Referral.sol +1 -0
  397. package/contracts/type/RoleId.sol +55 -82
  398. package/contracts/type/Seconds.sol +13 -1
  399. package/contracts/type/Timestamp.sol +11 -1
  400. package/contracts/type/UFixed.sol +34 -9
  401. package/contracts/type/Version.sol +3 -1
  402. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  403. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  404. package/package.json +3 -3
  405. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  406. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  407. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  408. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  409. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  410. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  411. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  412. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  413. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  414. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  415. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  416. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  417. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  418. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  419. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  420. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  421. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  422. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  423. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  424. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  425. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  426. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  427. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  428. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  429. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  430. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  431. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  432. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  433. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  434. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  435. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  436. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  437. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  438. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  439. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  440. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  441. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  442. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  443. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  444. package/contracts/registry/ReleaseManager.sol +0 -527
  445. package/contracts/shared/AccessManagerCustom.sol +0 -741
  446. package/contracts/shared/AccessManagerExtended.sol +0 -481
  447. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  448. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  449. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  450. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  451. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  452. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  453. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -10,12 +10,9 @@ import {ReferralId} from "../type/Referral.sol";
10
10
  import {RiskId} from "../type/RiskId.sol";
11
11
  import {Seconds} from "../type/Seconds.sol";
12
12
 
13
- interface IProductComponent is IInstanceLinkedComponent {
14
-
15
- function setFees(
16
- Fee memory productFee,
17
- Fee memory processingFee
18
- ) external;
13
+ interface IProductComponent is
14
+ IInstanceLinkedComponent
15
+ {
19
16
 
20
17
  function calculatePremium(
21
18
  Amount sumInsuredAmount,
@@ -33,10 +30,11 @@ interface IProductComponent is IInstanceLinkedComponent {
33
30
  bytes memory applicationData
34
31
  ) external view returns (Amount netPremiumAmount);
35
32
 
33
+ function getPoolNftId() external view returns (NftId poolNftId);
34
+ function getDistributionNftId() external view returns (NftId distributionNftId);
35
+
36
36
 
37
37
  /// @dev returns initial pool specific infos for this pool
38
38
  function getInitialProductInfo() external view returns (IComponents.ProductInfo memory info);
39
-
40
- function getPoolNftId() external view returns (NftId poolNftId);
41
- function getDistributionNftId() external view returns (NftId distributionNftId);
39
+
42
40
  }
@@ -1,26 +1,22 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
4
6
  import {IRegistry} from "../registry/IRegistry.sol";
5
7
  import {Product} from "./Product.sol";
6
8
  import {IComponents} from "../instance/module/IComponents.sol";
7
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
8
9
  import {IInstance} from "../instance/IInstance.sol";
9
10
  import {IPolicy} from "../instance/module/IPolicy.sol";
10
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
11
- import {IRisk} from "../instance/module/IRisk.sol";
12
- import {IBundle} from "../instance/module/IBundle.sol";
13
11
 
14
12
  import {TokenHandler} from "../shared/TokenHandler.sol";
13
+ import {TokenTransferLib} from "../shared/TokenTransferLib.sol";
15
14
 
16
15
  import {Amount, AmountLib} from "../type/Amount.sol";
17
- import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
18
16
  import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
19
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
20
17
  import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
21
- import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED, CONFIRMED} from "../type/StateId.sol";
18
+ import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED} from "../type/StateId.sol";
22
19
  import {NftId, NftIdLib} from "../type/NftId.sol";
23
- import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
24
20
  import {ReferralId} from "../type/Referral.sol";
25
21
  import {StateId} from "../type/StateId.sol";
26
22
  import {VersionPart} from "../type/Version.sol";
@@ -36,8 +32,6 @@ import {InstanceStore} from "../instance/InstanceStore.sol";
36
32
  import {IPolicyService} from "./IPolicyService.sol";
37
33
  import {IPoolService} from "../pool/IPoolService.sol";
38
34
  import {IPricingService} from "./IPricingService.sol";
39
- import {IService} from "../shared/IService.sol";
40
- import {Service} from "../shared/Service.sol";
41
35
 
42
36
  contract PolicyService is
43
37
  ComponentVerifyingService,
@@ -90,20 +84,43 @@ contract PolicyService is
90
84
  (, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
91
85
  product = Product(productInfo.objectAddress);
92
86
  }
93
-
87
+
94
88
 
95
89
  function decline(
96
- NftId policyNftId
90
+ NftId applicationNftId // = policyNftId
97
91
  )
98
92
  external
99
- override
93
+ virtual override
100
94
  {
101
- revert();
95
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
96
+ InstanceReader instanceReader = instance.getInstanceReader();
97
+
98
+ // check policy is in state applied
99
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
100
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
101
+ }
102
+
103
+ // check policy matches with calling product
104
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
105
+ if(applicationInfo.productNftId != productNftId) {
106
+ revert ErrorPolicyServicePolicyProductMismatch(
107
+ applicationNftId,
108
+ applicationInfo.productNftId,
109
+ productNftId);
110
+ }
111
+
112
+
113
+ // store updated policy info
114
+ instance.getInstanceStore().updatePolicyState(
115
+ applicationNftId,
116
+ DECLINED());
117
+
118
+ emit LogPolicyServicePolicyDeclined(applicationNftId);
102
119
  }
103
120
 
104
121
  event LogDebug(uint idx, string message);
105
122
 
106
- /// @dev underwites application which includes the locking of the required collateral from the pool.
123
+ /// @inheritdoc IPolicyService
107
124
  function collateralize(
108
125
  NftId applicationNftId, // = policyNftId
109
126
  bool requirePremiumPayment,
@@ -146,19 +163,20 @@ contract PolicyService is
146
163
 
147
164
  // optional activation of policy
148
165
  if(activateAt > zeroTimestamp()) {
149
- newPolicyState = ACTIVE();
150
166
  applicationInfo.activatedAt = activateAt;
151
167
  applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
152
168
  }
153
169
 
154
- // optional collection of premium
170
+ IPolicy.Premium memory premium;
171
+
172
+ // optional: calculate the premium and update counters for collection at the end of this function
155
173
  if(requirePremiumPayment) {
156
- Amount premiumPaidAmount = _calculateAndCollectPremium(
174
+ premium = _calculateAndProcessPremium(
157
175
  instance,
158
176
  applicationNftId,
159
177
  applicationInfo);
160
178
 
161
- applicationInfo.premiumPaidAmount = premiumPaidAmount;
179
+ applicationInfo.premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
162
180
  }
163
181
 
164
182
  // store updated policy info
@@ -170,9 +188,14 @@ contract PolicyService is
170
188
  // TODO add calling pool contract if it needs to validate application
171
189
 
172
190
  // TODO: add logging
173
- }
174
191
 
192
+ // optional: transfer funds for premium
193
+ if(requirePremiumPayment) {
194
+ _transferFunds(instanceReader, applicationNftId, applicationInfo.productNftId, premium);
195
+ }
196
+ }
175
197
 
198
+ /// @inheritdoc IPolicyService
176
199
  function collectPremium(
177
200
  NftId policyNftId,
178
201
  Timestamp activateAt
@@ -186,8 +209,8 @@ contract PolicyService is
186
209
  StateId stateId = instanceReader.getPolicyState(policyNftId);
187
210
 
188
211
  // check policy is in state collateralized or active
189
- if (!(stateId == COLLATERALIZED() || stateId == ACTIVE())) {
190
- revert ErrorPolicyServicePolicyStateNotCollateralizedOrApplied(policyNftId);
212
+ if (!(stateId == COLLATERALIZED())) {
213
+ revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
191
214
  }
192
215
 
193
216
  IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
@@ -197,11 +220,14 @@ contract PolicyService is
197
220
  revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
198
221
  }
199
222
 
200
- policyInfo.premiumPaidAmount = _calculateAndCollectPremium(
223
+ // calculate premium
224
+ IPolicy.Premium memory premium = _calculateAndProcessPremium(
201
225
  instance,
202
226
  policyNftId,
203
227
  policyInfo);
204
228
 
229
+ policyInfo.premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
230
+
205
231
  instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
206
232
 
207
233
  if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
@@ -209,8 +235,11 @@ contract PolicyService is
209
235
  }
210
236
 
211
237
  // TODO: add logging
238
+
239
+ _transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
212
240
  }
213
241
 
242
+ /// @inheritdoc IPolicyService
214
243
  function activate(NftId policyNftId, Timestamp activateAt) public override {
215
244
  // check caller is registered product
216
245
  (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
@@ -218,27 +247,67 @@ contract PolicyService is
218
247
 
219
248
  IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
220
249
 
221
- require(
222
- policyInfo.activatedAt.eqz(),
223
- "ERROR:PRS-020:ALREADY_ACTIVATED");
250
+ if(! policyInfo.activatedAt.eqz()) {
251
+ revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
252
+ }
224
253
 
225
254
  policyInfo.activatedAt = activateAt;
226
255
  policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
227
256
 
228
- instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, ACTIVE());
257
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
229
258
 
230
259
  // TODO: add logging
231
260
  }
232
261
 
233
-
262
+ /// @inheritdoc IPolicyService
234
263
  function expire(
235
- NftId policyNftId
264
+ NftId policyNftId,
265
+ Timestamp expireAt
236
266
  )
237
267
  external
238
268
  override
239
- // solhint-disable-next-line no-empty-blocks
269
+ virtual
270
+ returns (Timestamp)
240
271
  {
241
-
272
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
273
+ InstanceReader instanceReader = instance.getInstanceReader();
274
+
275
+ // check policy matches with calling product
276
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
277
+ if(policyInfo.productNftId != productNftId) {
278
+ revert ErrorPolicyServicePolicyProductMismatch(
279
+ policyNftId,
280
+ policyInfo.productNftId,
281
+ productNftId);
282
+ }
283
+
284
+ // check policy is in state applied or not active
285
+ if (instanceReader.getPolicyState(policyNftId) != COLLATERALIZED() || TimestampLib.blockTimestamp() < policyInfo.activatedAt) {
286
+ revert ErrorIPolicyServicePolicyNotActive(policyNftId, instanceReader.getPolicyState(policyNftId));
287
+ }
288
+
289
+
290
+ if (expireAt.eqz()) {
291
+ expireAt = TimestampLib.blockTimestamp();
292
+ }
293
+
294
+ // check preconditions
295
+ if (expireAt >= policyInfo.expiredAt) {
296
+ revert ErrorIPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
297
+ }
298
+ if (expireAt < TimestampLib.blockTimestamp()) {
299
+ revert ErrorIPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
300
+ }
301
+ if (policyInfo.openClaimsCount > 0) {
302
+ revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
303
+ }
304
+
305
+ policyInfo.expiredAt = expireAt;
306
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
307
+
308
+ emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expireAt);
309
+
310
+ return expireAt;
242
311
  }
243
312
 
244
313
  function close(
@@ -257,7 +326,7 @@ contract PolicyService is
257
326
  }
258
327
 
259
328
  StateId state = instanceReader.getPolicyState(policyNftId);
260
- if (state != ACTIVE()) {
329
+ if (state != COLLATERALIZED() || TimestampLib.blockTimestamp() < policyInfo.activatedAt) {
261
330
  revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
262
331
  }
263
332
 
@@ -286,7 +355,8 @@ contract PolicyService is
286
355
  }
287
356
 
288
357
 
289
- function _calculateAndCollectPremium(
358
+ /// @dev calculates the premium and updates all counters in the other services
359
+ function _calculateAndProcessPremium(
290
360
  IInstance instance,
291
361
  NftId applicationNftId,
292
362
  IPolicy.PolicyInfo memory applicationInfo
@@ -294,13 +364,14 @@ contract PolicyService is
294
364
  internal
295
365
  virtual
296
366
  returns (
297
- Amount premiumPaidAmount
367
+ IPolicy.Premium memory premium
298
368
  )
299
369
  {
300
370
  NftId productNftId = applicationInfo.productNftId;
371
+ InstanceReader instanceReader = instance.getInstanceReader();
301
372
 
302
373
  // calculate premium details
303
- IPolicy.Premium memory premium = _pricingService.calculatePremium(
374
+ premium = _pricingService.calculatePremium(
304
375
  productNftId,
305
376
  applicationInfo.riskId,
306
377
  applicationInfo.sumInsuredAmount,
@@ -309,90 +380,63 @@ contract PolicyService is
309
380
  applicationInfo.bundleNftId,
310
381
  applicationInfo.referralId);
311
382
 
383
+ // ensure the calculated premium is not higher than the expected premium from the application
384
+ if (applicationInfo.premiumAmount.toInt() < premium.premiumAmount) {
385
+ revert ErrorPolicyServicePremiumHigherThanExpected(applicationInfo.premiumAmount.toInt(), premium.premiumAmount);
386
+ }
312
387
 
313
- // update financials and transfer premium tokens
314
- premiumPaidAmount = _processAndCollect(
315
- instance,
316
- productNftId,
317
- applicationNftId,
318
- applicationInfo.premiumAmount,
319
- applicationInfo.bundleNftId,
320
- applicationInfo.referralId,
321
- premium);
322
- }
323
-
324
-
325
- function _processAndCollect(
326
- IInstance instance,
327
- NftId productNftId,
328
- NftId policyNftId,
329
- Amount premiumExpectedAmount,
330
- NftId bundleNftId,
331
- ReferralId referralId,
332
- IPolicy.Premium memory premium
333
- )
334
- internal
335
- virtual
336
- returns (Amount premiumPaidAmount)
337
- {
338
- InstanceReader instanceReader = instance.getInstanceReader();
339
- TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
340
- address policyHolder = getRegistry().ownerOf(policyNftId);
341
- premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
342
-
343
- _checkPremiumBalanceAndAllowance(
344
- tokenHandler,
345
- policyHolder,
346
- premiumExpectedAmount,
347
- premiumPaidAmount);
388
+ // check if premium balance and allowance of policy holder is sufficient
389
+ {
390
+ TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
391
+ address policyHolder = getRegistry().ownerOf(applicationNftId);
392
+
393
+ _checkPremiumBalanceAndAllowance(
394
+ tokenHandler.getToken(),
395
+ address(tokenHandler),
396
+ policyHolder,
397
+ applicationInfo.premiumAmount,
398
+ AmountLib.toAmount(premium.premiumAmount));
399
+ }
348
400
 
349
- _processSaleAndTransferFunds(
401
+ // update the counters
402
+ _processSale(
350
403
  instanceReader,
351
404
  instance.getInstanceStore(),
352
- tokenHandler,
353
- policyHolder,
354
405
  productNftId,
355
- bundleNftId,
356
- referralId,
406
+ applicationInfo.bundleNftId,
407
+ applicationInfo.referralId,
357
408
  premium);
358
409
  }
359
410
 
360
-
411
+ /// @dev checks the balance and allowance of the policy holder
361
412
  function _checkPremiumBalanceAndAllowance(
362
- TokenHandler tokenHandler,
413
+ IERC20Metadata token,
414
+ address tokenHandlerAddress,
363
415
  address policyHolder,
364
416
  Amount premiumExpectedAmount,
365
- Amount premiumPaidAmount
417
+ Amount premiumAmount
366
418
  )
367
419
  internal
368
420
  virtual
369
421
  view
370
422
  {
371
- // TODO decide how to handle this properly
372
- // not clear if this is the best way to handle this
373
- if (premiumExpectedAmount < premiumPaidAmount) {
374
- revert ErrorPolicyServicePremiumHigherThanExpected(premiumExpectedAmount, premiumPaidAmount);
375
- }
376
-
377
- uint256 premiumAmount = premiumPaidAmount.toInt();
378
- uint256 balance = tokenHandler.getToken().balanceOf(policyHolder);
379
- uint256 allowance = tokenHandler.getToken().allowance(policyHolder, address(tokenHandler));
423
+ uint256 premium = premiumAmount.toInt();
424
+ uint256 balance = token.balanceOf(policyHolder);
425
+ uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
380
426
 
381
- if (balance < premiumAmount) {
382
- revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premiumAmount, balance);
427
+ if (balance < premium) {
428
+ revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
383
429
  }
384
430
 
385
- if (allowance < premiumAmount) {
386
- revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, address(tokenHandler), premiumAmount, allowance);
431
+ if (allowance < premium) {
432
+ revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
387
433
  }
388
434
  }
389
435
 
390
-
391
- function _processSaleAndTransferFunds(
436
+ /// @dev update counters by calling the involved services
437
+ function _processSale(
392
438
  InstanceReader instanceReader,
393
439
  InstanceStore instanceStore,
394
- TokenHandler tokenHandler,
395
- address policyHolder,
396
440
  NftId productNftId,
397
441
  NftId bundleNftId,
398
442
  ReferralId referralId,
@@ -426,11 +470,51 @@ contract PolicyService is
426
470
  _poolService.processSale(
427
471
  bundleNftId,
428
472
  premium);
473
+ }
474
+
475
+ /// @dev transfer the premium to the wallets the premium is distributed to
476
+ function _transferFunds(
477
+ InstanceReader instanceReader,
478
+ NftId policyNftId,
479
+ NftId productNftId,
480
+ IPolicy.Premium memory premium
481
+ )
482
+ internal
483
+ virtual
484
+ {
485
+ TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
486
+ address policyHolder = getRegistry().ownerOf(policyNftId);
429
487
 
430
- // transfer premium amounts to target wallets
431
- tokenHandler.transfer(policyHolder, productWallet, premium.productFeeAmount);
432
- tokenHandler.transfer(policyHolder, distributionWallet, premium.distributionFeeAndCommissionAmount);
433
- tokenHandler.transfer(policyHolder, poolWallet, premium.poolPremiumAndFeeAmount);
488
+ (
489
+ ,
490
+ address distributionWallet,
491
+ address poolWallet,
492
+ address productWallet
493
+ ) = _getDistributionNftAndWallets(
494
+ instanceReader,
495
+ productNftId);
496
+
497
+ if (premium.productFeeAmount.gtz()) {
498
+ TokenTransferLib.collectTokens(
499
+ policyHolder,
500
+ productWallet,
501
+ premium.productFeeAmount,
502
+ tokenHandler);
503
+ }
504
+ if (premium.distributionFeeAndCommissionAmount.gtz()) {
505
+ TokenTransferLib.collectTokens(
506
+ policyHolder,
507
+ distributionWallet,
508
+ premium.distributionFeeAndCommissionAmount,
509
+ tokenHandler);
510
+ }
511
+ if (premium.poolPremiumAndFeeAmount.gtz()) {
512
+ TokenTransferLib.collectTokens(
513
+ policyHolder,
514
+ poolWallet,
515
+ premium.poolPremiumAndFeeAmount,
516
+ tokenHandler);
517
+ }
434
518
  }
435
519
 
436
520
 
@@ -1,12 +1,9 @@
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 {PolicyService} from "./PolicyService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {VersionLib} from "../type/Version.sol";
10
7
 
11
8
  contract PolicyServiceManager is ProxyManager {
12
9
 
@@ -1,12 +1,9 @@
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 {PricingService} from "./PricingService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract PricingServiceManager is ProxyManager {
12
9