@etherisc/gif-next 0.0.2-7bdebe2-893 → 0.0.2-7bf391b-976

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 (626) hide show
  1. package/README.md +48 -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/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/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 +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 +4 -0
  27. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +181 -361
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1557 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +854 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +181 -238
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +160 -297
  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 +247 -2323
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +203 -46
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +427 -2916
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +499 -375
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +268 -207
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -102
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3469 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  74. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  82. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +160 -219
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1055 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  92. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +265 -240
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1521 -0
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +830 -0
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  100. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +253 -45
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  102. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +190 -339
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  104. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +332 -196
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +1218 -0
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1700 -0
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +798 -0
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1280 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1339 -0
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +826 -0
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  126. package/artifacts/contracts/{instance/service → product}/IClaimService.sol/IClaimService.json +47 -2
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +255 -90
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  130. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +66 -136
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +14 -56
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1335 -0
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +794 -0
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  144. package/artifacts/contracts/{components → product}/Product.sol/Product.json +354 -314
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +182 -28
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +206 -124
  155. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/Registry.sol/Registry.json +443 -43
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +374 -72
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -41
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  165. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -140
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  173. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +105 -120
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1712 -0
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +22 -114
  180. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  181. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +77 -82
  182. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  184. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
  186. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  188. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  190. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  192. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +21 -3
  194. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  196. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  199. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  200. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  201. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  202. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  203. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +977 -0
  205. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  207. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  209. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  211. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -9
  213. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
  215. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -9
  217. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  218. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  219. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  220. package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
  221. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +107 -6
  223. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  225. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  226. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  227. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  229. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  230. package/artifacts/contracts/staking/Staking.sol/Staking.json +1991 -0
  231. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  233. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +773 -0
  235. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  237. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  239. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  241. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  243. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  245. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  246. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  247. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  249. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  250. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  251. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  253. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  254. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  255. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  256. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  257. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  258. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  259. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  261. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  263. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  265. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  267. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  269. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  271. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  273. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  275. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  276. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  277. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  279. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  281. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  282. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  283. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  285. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  286. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -7
  287. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  288. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  289. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  291. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  292. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  293. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  294. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  295. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  296. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  297. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  298. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  299. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  300. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  301. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  302. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  303. package/contracts/authorization/AccessAdmin.sol +591 -0
  304. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  305. package/contracts/authorization/Authorization.sol +218 -0
  306. package/contracts/authorization/IAccess.sol +48 -0
  307. package/contracts/authorization/IAccessAdmin.sol +136 -0
  308. package/contracts/authorization/IAuthorization.sol +54 -0
  309. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  310. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  311. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  312. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  313. package/contracts/distribution/BasicDistribution.sol +138 -0
  314. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  315. package/contracts/{components → distribution}/Distribution.sol +172 -161
  316. package/contracts/distribution/DistributionService.sol +336 -0
  317. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  318. package/contracts/distribution/IDistributionComponent.sol +52 -0
  319. package/contracts/{instance/service → distribution}/IDistributionService.sol +36 -38
  320. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +27 -27
  321. package/contracts/instance/IInstance.sol +54 -72
  322. package/contracts/instance/IInstanceService.sol +50 -21
  323. package/contracts/instance/Instance.sol +150 -214
  324. package/contracts/instance/InstanceAdmin.sol +266 -0
  325. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  326. package/contracts/instance/InstanceReader.sol +109 -67
  327. package/contracts/instance/InstanceService.sol +267 -308
  328. package/contracts/instance/InstanceServiceManager.sol +12 -26
  329. package/contracts/instance/InstanceStore.sol +277 -0
  330. package/contracts/instance/base/BalanceStore.sol +123 -0
  331. package/contracts/instance/base/Cloneable.sol +28 -0
  332. package/contracts/instance/base/ObjectCounter.sol +21 -0
  333. package/contracts/instance/base/ObjectLifecycle.sol +104 -0
  334. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  335. package/contracts/instance/module/IAccess.sol +4 -12
  336. package/contracts/instance/module/IBundle.sol +6 -9
  337. package/contracts/instance/module/IComponents.sol +20 -15
  338. package/contracts/instance/module/IDistribution.sol +6 -6
  339. package/contracts/instance/module/IPolicy.sol +21 -14
  340. package/contracts/instance/module/IRisk.sol +1 -1
  341. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  342. package/contracts/oracle/BasicOracle.sol +48 -0
  343. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  344. package/contracts/oracle/IOracle.sol +36 -0
  345. package/contracts/oracle/IOracleComponent.sol +33 -0
  346. package/contracts/oracle/IOracleService.sol +65 -0
  347. package/contracts/oracle/Oracle.sol +166 -0
  348. package/contracts/oracle/OracleService.sol +278 -0
  349. package/contracts/oracle/OracleServiceManager.sol +39 -0
  350. package/contracts/pool/BasicPool.sol +166 -0
  351. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  352. package/contracts/pool/BundleService.sol +450 -0
  353. package/contracts/pool/BundleServiceManager.sol +39 -0
  354. package/contracts/{instance/service → pool}/IBundleService.sol +50 -30
  355. package/contracts/pool/IPoolComponent.sol +58 -0
  356. package/contracts/{instance/service → pool}/IPoolService.sol +70 -44
  357. package/contracts/pool/Pool.sol +328 -0
  358. package/contracts/pool/PoolService.sol +559 -0
  359. package/contracts/pool/PoolServiceManager.sol +39 -0
  360. package/contracts/product/ApplicationService.sol +230 -0
  361. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  362. package/contracts/product/BasicProduct.sol +52 -0
  363. package/contracts/product/BasicProductAuthorization.sol +43 -0
  364. package/contracts/{instance/service → product}/ClaimService.sol +81 -101
  365. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  366. package/contracts/{instance/service → product}/IApplicationService.sol +13 -29
  367. package/contracts/{instance/service → product}/IClaimService.sol +24 -14
  368. package/contracts/product/IPolicyService.sol +85 -0
  369. package/contracts/product/IPricingService.sol +39 -0
  370. package/contracts/product/IProductComponent.sol +40 -0
  371. package/contracts/product/IProductService.sol +33 -0
  372. package/contracts/product/PolicyService.sol +556 -0
  373. package/contracts/product/PolicyServiceManager.sol +39 -0
  374. package/contracts/product/PricingService.sol +300 -0
  375. package/contracts/product/PricingServiceManager.sol +39 -0
  376. package/contracts/{components → product}/Product.sol +165 -125
  377. package/contracts/product/ProductService.sol +99 -0
  378. package/contracts/product/ProductServiceManager.sol +39 -0
  379. package/contracts/registry/ChainNft.sol +8 -1
  380. package/contracts/registry/IRegistry.sol +59 -26
  381. package/contracts/registry/IRegistryService.sol +42 -39
  382. package/contracts/registry/Registry.sol +234 -125
  383. package/contracts/registry/RegistryAdmin.sol +365 -0
  384. package/contracts/registry/RegistryService.sol +69 -99
  385. package/contracts/registry/RegistryServiceManager.sol +23 -32
  386. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  387. package/contracts/registry/ReleaseRegistry.sol +485 -0
  388. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  389. package/contracts/registry/TokenRegistry.sol +261 -62
  390. package/contracts/shared/Component.sol +281 -0
  391. package/contracts/shared/ComponentService.sol +650 -0
  392. package/contracts/shared/ComponentServiceManager.sol +35 -0
  393. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  394. package/contracts/{components → shared}/IComponent.sol +21 -40
  395. package/contracts/shared/IComponentService.sol +108 -0
  396. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  397. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  398. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  399. package/contracts/shared/INftOwnable.sol +2 -2
  400. package/contracts/shared/IPolicyHolder.sol +10 -5
  401. package/contracts/shared/IService.sol +10 -3
  402. package/contracts/shared/InitializableCustom.sol +177 -0
  403. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
  404. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  405. package/contracts/shared/KeyValueStore.sol +131 -0
  406. package/contracts/shared/Lifecycle.sol +77 -0
  407. package/contracts/shared/NftIdSet.sol +65 -0
  408. package/contracts/shared/NftOwnable.sol +5 -16
  409. package/contracts/shared/PolicyHolder.sol +24 -19
  410. package/contracts/shared/Registerable.sol +3 -3
  411. package/contracts/shared/Service.sol +32 -22
  412. package/contracts/shared/TokenHandler.sol +31 -2
  413. package/contracts/staking/IStaking.sol +167 -0
  414. package/contracts/staking/IStakingService.sol +160 -0
  415. package/contracts/staking/StakeManagerLib.sol +231 -0
  416. package/contracts/staking/Staking.sol +516 -0
  417. package/contracts/staking/StakingLifecycle.sol +23 -0
  418. package/contracts/staking/StakingManager.sol +50 -0
  419. package/contracts/staking/StakingReader.sol +183 -0
  420. package/contracts/staking/StakingService.sol +407 -0
  421. package/contracts/staking/StakingServiceManager.sol +44 -0
  422. package/contracts/staking/StakingStore.sol +605 -0
  423. package/contracts/staking/TargetManagerLib.sol +207 -0
  424. package/contracts/{types → type}/AddressSet.sol +1 -1
  425. package/contracts/{types → type}/Amount.sol +56 -1
  426. package/contracts/{types → type}/Blocknumber.sol +26 -3
  427. package/contracts/{types → type}/Fee.sol +24 -22
  428. package/contracts/{types → type}/NftId.sol +14 -16
  429. package/contracts/{types → type}/NftIdSet.sol +2 -2
  430. package/contracts/type/ObjectType.sol +271 -0
  431. package/contracts/{types → type}/Referral.sol +2 -1
  432. package/contracts/type/RequestId.sol +75 -0
  433. package/contracts/{types → type}/RiskId.sol +1 -1
  434. package/contracts/type/RoleId.sol +174 -0
  435. package/contracts/{types → type}/Seconds.sol +40 -1
  436. package/contracts/type/Selector.sol +102 -0
  437. package/contracts/{types → type}/StateId.sol +27 -2
  438. package/contracts/type/String.sol +53 -0
  439. package/contracts/{types → type}/Timestamp.sol +17 -3
  440. package/contracts/{types → type}/UFixed.sol +34 -9
  441. package/contracts/{types → type}/Version.sol +4 -2
  442. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  443. package/contracts/{shared → upgradeability}/ProxyManager.sol +36 -7
  444. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  445. package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
  446. package/package.json +8 -5
  447. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  448. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  449. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  450. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  451. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  452. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  453. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  454. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  455. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  456. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  457. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  458. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  459. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  460. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  461. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  462. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  463. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  464. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  465. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  466. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  467. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  468. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  469. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  470. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  471. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  472. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  473. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  474. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  475. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1092
  476. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  477. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -672
  478. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  479. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1291
  480. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  481. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -700
  482. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  483. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -1400
  484. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  485. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -760
  486. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  487. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  488. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  489. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -780
  490. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  491. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  492. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  493. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  494. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  495. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  497. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1153
  499. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -676
  501. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1670
  503. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  504. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -732
  505. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  506. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -864
  507. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  509. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  510. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  511. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  512. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  513. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  514. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  515. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  516. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  517. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  518. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  519. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  520. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  521. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  522. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  523. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  524. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  525. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  526. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -370
  527. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  528. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  529. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  530. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -588
  531. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  532. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  533. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  534. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  535. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  536. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  537. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  538. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  539. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  540. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  541. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  542. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -209
  543. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  544. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  545. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  547. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -179
  549. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  551. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  553. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  554. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  555. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  557. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  558. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  559. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  561. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  563. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  564. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -209
  565. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  567. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  568. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  569. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  570. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  571. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  572. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  573. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  574. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  575. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  576. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  577. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  578. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  579. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  581. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  582. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  583. package/contracts/components/Component.sol +0 -272
  584. package/contracts/components/IDistributionComponent.sol +0 -71
  585. package/contracts/components/IPoolComponent.sol +0 -113
  586. package/contracts/components/IProductComponent.sol +0 -40
  587. package/contracts/components/Pool.sol +0 -302
  588. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  589. package/contracts/instance/Cloneable.sol +0 -51
  590. package/contracts/instance/InstanceAccessManager.sol +0 -527
  591. package/contracts/instance/base/ComponentService.sol +0 -130
  592. package/contracts/instance/base/KeyValueStore.sol +0 -149
  593. package/contracts/instance/base/Lifecycle.sol +0 -120
  594. package/contracts/instance/module/ISetup.sol +0 -33
  595. package/contracts/instance/module/ITreasury.sol +0 -23
  596. package/contracts/instance/service/ApplicationService.sol +0 -356
  597. package/contracts/instance/service/BundleService.sol +0 -385
  598. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  599. package/contracts/instance/service/DistributionService.sol +0 -431
  600. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  601. package/contracts/instance/service/IPolicyService.sol +0 -80
  602. package/contracts/instance/service/IProductService.sol +0 -40
  603. package/contracts/instance/service/PolicyService.sol +0 -358
  604. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  605. package/contracts/instance/service/PoolService.sol +0 -403
  606. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  607. package/contracts/instance/service/ProductService.sol +0 -210
  608. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  609. package/contracts/registry/RegistryAccessManager.sol +0 -216
  610. package/contracts/registry/ReleaseManager.sol +0 -324
  611. package/contracts/shared/ContractDeployerLib.sol +0 -72
  612. package/contracts/test/TestFee.sol +0 -25
  613. package/contracts/test/TestRegisterable.sol +0 -18
  614. package/contracts/test/TestRoleId.sol +0 -14
  615. package/contracts/test/TestService.sol +0 -25
  616. package/contracts/test/TestToken.sol +0 -26
  617. package/contracts/test/TestVersion.sol +0 -44
  618. package/contracts/test/TestVersionable.sol +0 -17
  619. package/contracts/types/ChainId.sol +0 -38
  620. package/contracts/types/NumberId.sol +0 -52
  621. package/contracts/types/ObjectType.sol +0 -157
  622. package/contracts/types/RoleId.sol +0 -97
  623. /package/contracts/{types → type}/ClaimId.sol +0 -0
  624. /package/contracts/{types → type}/DistributorType.sol +0 -0
  625. /package/contracts/{types → type}/Key32.sol +0 -0
  626. /package/contracts/{types → type}/PayoutId.sol +0 -0
@@ -0,0 +1,40 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {Fee} from "../type/Fee.sol";
6
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
7
+ import {IComponents} from "../instance/module/IComponents.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ReferralId} from "../type/Referral.sol";
10
+ import {RiskId} from "../type/RiskId.sol";
11
+ import {Seconds} from "../type/Seconds.sol";
12
+
13
+ interface IProductComponent is
14
+ IInstanceLinkedComponent
15
+ {
16
+
17
+ function calculatePremium(
18
+ Amount sumInsuredAmount,
19
+ RiskId riskId,
20
+ Seconds lifetime,
21
+ bytes memory applicationData,
22
+ NftId bundleNftId,
23
+ ReferralId referralId
24
+ ) external view returns (Amount premiumAmount);
25
+
26
+ function calculateNetPremium(
27
+ Amount sumInsuredAmount,
28
+ RiskId riskId,
29
+ Seconds lifetime,
30
+ bytes memory applicationData
31
+ ) external view returns (Amount netPremiumAmount);
32
+
33
+ function getPoolNftId() external view returns (NftId poolNftId);
34
+ function getDistributionNftId() external view returns (NftId distributionNftId);
35
+
36
+
37
+ /// @dev returns initial pool specific infos for this pool
38
+ function getInitialProductInfo() external view returns (IComponents.ProductInfo memory info);
39
+
40
+ }
@@ -0,0 +1,33 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRisk} from "../instance/module/IRisk.sol";
5
+ import {IService} from "../shared/IService.sol";
6
+
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ReferralId} from "../type/Referral.sol";
9
+ import {RiskId} from "../type/RiskId.sol";
10
+ import {StateId} from "../type/StateId.sol";
11
+ import {Timestamp} from "../type/Timestamp.sol";
12
+ import {UFixed} from "../type/UFixed.sol";
13
+ import {Fee} from "../type/Fee.sol";
14
+
15
+ interface IProductService is IService {
16
+
17
+ function createRisk(
18
+ RiskId riskId,
19
+ bytes memory data
20
+ ) external;
21
+
22
+
23
+ function updateRisk(
24
+ RiskId riskId,
25
+ bytes memory data
26
+ ) external;
27
+
28
+
29
+ function updateRiskState(
30
+ RiskId riskId,
31
+ StateId newState
32
+ ) external;
33
+ }
@@ -0,0 +1,556 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IRegistry} from "../registry/IRegistry.sol";
7
+ import {Product} from "./Product.sol";
8
+ import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
10
+ import {IPolicy} from "../instance/module/IPolicy.sol";
11
+
12
+ import {TokenHandler} from "../shared/TokenHandler.sol";
13
+
14
+ import {Amount, AmountLib} from "../type/Amount.sol";
15
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
16
+ import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
17
+ import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED} from "../type/StateId.sol";
18
+ import {NftId, NftIdLib} from "../type/NftId.sol";
19
+ import {ReferralId} from "../type/Referral.sol";
20
+ import {StateId} from "../type/StateId.sol";
21
+ import {VersionPart} from "../type/Version.sol";
22
+
23
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
24
+ import {IApplicationService} from "./IApplicationService.sol";
25
+ import {IBundleService} from "../pool/IBundleService.sol";
26
+ import {IClaimService} from "./IClaimService.sol";
27
+ import {IComponentService} from "../shared/IComponentService.sol";
28
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
29
+ import {InstanceReader} from "../instance/InstanceReader.sol";
30
+ import {InstanceStore} from "../instance/InstanceStore.sol";
31
+ import {IPolicyService} from "./IPolicyService.sol";
32
+ import {IPoolService} from "../pool/IPoolService.sol";
33
+ import {IPricingService} from "./IPricingService.sol";
34
+
35
+ contract PolicyService is
36
+ ComponentVerifyingService,
37
+ IPolicyService
38
+ {
39
+ using NftIdLib for NftId;
40
+ using TimestampLib for Timestamp;
41
+
42
+ IApplicationService internal _applicationService;
43
+ IComponentService internal _componentService;
44
+ IBundleService internal _bundleService;
45
+ IClaimService internal _claimService;
46
+ IDistributionService internal _distributionService;
47
+ IPoolService internal _poolService;
48
+ IPricingService internal _pricingService;
49
+
50
+ event LogProductServiceSender(address sender);
51
+
52
+ function _initialize(
53
+ address owner,
54
+ bytes memory data
55
+ )
56
+ internal
57
+ virtual override
58
+ initializer
59
+ {
60
+ (
61
+ address registryAddress,,
62
+ //address managerAddress
63
+ address authority
64
+ ) = abi.decode(data, (address, address, address));
65
+
66
+ initializeService(registryAddress, authority, owner);
67
+
68
+ VersionPart majorVersion = getVersion().toMajorPart();
69
+ _applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
70
+ _bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
71
+ _componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
72
+ _claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
73
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
74
+ _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
75
+ _pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
76
+
77
+ registerInterface(type(IPolicyService).interfaceId);
78
+ }
79
+
80
+
81
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
82
+ IRegistry.ObjectInfo memory productInfo;
83
+ (, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
84
+ product = Product(productInfo.objectAddress);
85
+ }
86
+
87
+
88
+ function decline(
89
+ NftId applicationNftId // = policyNftId
90
+ )
91
+ external
92
+ virtual override
93
+ {
94
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
95
+ InstanceReader instanceReader = instance.getInstanceReader();
96
+
97
+ // check policy is in state applied
98
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
99
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
100
+ }
101
+
102
+ // check policy matches with calling product
103
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
104
+ if(applicationInfo.productNftId != productNftId) {
105
+ revert ErrorPolicyServicePolicyProductMismatch(
106
+ applicationNftId,
107
+ applicationInfo.productNftId,
108
+ productNftId);
109
+ }
110
+
111
+
112
+ // store updated policy info
113
+ instance.getInstanceStore().updatePolicyState(
114
+ applicationNftId,
115
+ DECLINED());
116
+
117
+ emit LogPolicyServicePolicyDeclined(applicationNftId);
118
+ }
119
+
120
+ event LogDebug(uint idx, string message);
121
+
122
+ /// @inheritdoc IPolicyService
123
+ function collateralize(
124
+ NftId applicationNftId, // = policyNftId
125
+ bool requirePremiumPayment,
126
+ Timestamp activateAt
127
+ )
128
+ external
129
+ virtual override
130
+ {
131
+ // check caller is registered product
132
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
133
+ InstanceReader instanceReader = instance.getInstanceReader();
134
+
135
+ // check policy is in state applied
136
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
137
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
138
+ }
139
+
140
+ // check policy matches with calling product
141
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
142
+ if(applicationInfo.productNftId != productNftId) {
143
+ revert ErrorPolicyServicePolicyProductMismatch(
144
+ applicationNftId,
145
+ applicationInfo.productNftId,
146
+ productNftId);
147
+ }
148
+
149
+ StateId newPolicyState = COLLATERALIZED();
150
+
151
+ // actual collateralizaion
152
+ (
153
+ Amount localCollateralAmount,
154
+ Amount totalCollateralAmount
155
+ ) = _poolService.lockCollateral(
156
+ instance,
157
+ address(instanceReader.getComponentInfo(productNftId).token),
158
+ productNftId,
159
+ applicationNftId,
160
+ applicationInfo.bundleNftId,
161
+ applicationInfo.sumInsuredAmount);
162
+
163
+ // optional activation of policy
164
+ if(activateAt > zeroTimestamp()) {
165
+ applicationInfo.activatedAt = activateAt;
166
+ applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
167
+ }
168
+
169
+ IPolicy.Premium memory premium;
170
+
171
+ // optional: calculate the premium and update counters for collection at the end of this function
172
+ if(requirePremiumPayment) {
173
+ premium = _calculateAndProcessPremium(
174
+ instance,
175
+ applicationNftId,
176
+ applicationInfo);
177
+
178
+ applicationInfo.premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
179
+ }
180
+
181
+ // store updated policy info
182
+ instance.getInstanceStore().updatePolicy(
183
+ applicationNftId,
184
+ applicationInfo,
185
+ newPolicyState);
186
+
187
+ // TODO add calling pool contract if it needs to validate application
188
+
189
+ // TODO: add logging
190
+
191
+ // optional: transfer funds for premium
192
+ if(requirePremiumPayment) {
193
+ _transferFunds(instanceReader, applicationNftId, applicationInfo.productNftId, premium);
194
+ }
195
+ }
196
+
197
+ /// @inheritdoc IPolicyService
198
+ function collectPremium(
199
+ NftId policyNftId,
200
+ Timestamp activateAt
201
+ )
202
+ external
203
+ virtual
204
+ {
205
+ // check caller is registered product
206
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
207
+ InstanceReader instanceReader = instance.getInstanceReader();
208
+ StateId stateId = instanceReader.getPolicyState(policyNftId);
209
+
210
+ // check policy is in state collateralized or active
211
+ if (!(stateId == COLLATERALIZED())) {
212
+ revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
213
+ }
214
+
215
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
216
+
217
+ // check if premium is already collected
218
+ if (policyInfo.premiumPaidAmount.gtz()) {
219
+ revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
220
+ }
221
+
222
+ // calculate premium
223
+ IPolicy.Premium memory premium = _calculateAndProcessPremium(
224
+ instance,
225
+ policyNftId,
226
+ policyInfo);
227
+
228
+ policyInfo.premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
229
+
230
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
231
+
232
+ if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
233
+ activate(policyNftId, activateAt);
234
+ }
235
+
236
+ // TODO: add logging
237
+
238
+ _transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
239
+ }
240
+
241
+ /// @inheritdoc IPolicyService
242
+ function activate(NftId policyNftId, Timestamp activateAt) public override {
243
+ // check caller is registered product
244
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
245
+ InstanceReader instanceReader = instance.getInstanceReader();
246
+
247
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
248
+
249
+ if(! policyInfo.activatedAt.eqz()) {
250
+ revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
251
+ }
252
+
253
+ policyInfo.activatedAt = activateAt;
254
+ policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
255
+
256
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
257
+
258
+ // TODO: add logging
259
+ }
260
+
261
+ /// @inheritdoc IPolicyService
262
+ function expire(
263
+ NftId policyNftId,
264
+ Timestamp expireAt
265
+ )
266
+ external
267
+ override
268
+ virtual
269
+ returns (Timestamp)
270
+ {
271
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
272
+ InstanceReader instanceReader = instance.getInstanceReader();
273
+
274
+ // check policy matches with calling product
275
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
276
+ if(policyInfo.productNftId != productNftId) {
277
+ revert ErrorPolicyServicePolicyProductMismatch(
278
+ policyNftId,
279
+ policyInfo.productNftId,
280
+ productNftId);
281
+ }
282
+
283
+ // check policy is active
284
+ StateId policyState = instanceReader.getPolicyState(policyNftId);
285
+ if (!_policyHasBeenActivated(policyState, policyInfo)) {
286
+ revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
287
+ }
288
+
289
+ // set expiryAt to current block timestamp if not set
290
+ if (expireAt.eqz()) {
291
+ expireAt = TimestampLib.blockTimestamp();
292
+ }
293
+
294
+ // check expiryAt represents a valid expiry time
295
+ if (expireAt >= policyInfo.expiredAt) {
296
+ revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
297
+ }
298
+ if (expireAt < TimestampLib.blockTimestamp()) {
299
+ revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
300
+ }
301
+
302
+ // update policyInfo with new expiryAt timestamp
303
+ policyInfo.expiredAt = expireAt;
304
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
305
+
306
+ emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expireAt);
307
+
308
+ return expireAt;
309
+ }
310
+
311
+ function close(
312
+ NftId policyNftId
313
+ )
314
+ external
315
+ override
316
+ {
317
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
318
+ InstanceReader instanceReader = instance.getInstanceReader();
319
+
320
+ // check that policy has been activated
321
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
322
+ StateId policyState = instanceReader.getPolicyState(policyNftId);
323
+ if (!_policyHasBeenActivated(policyState, policyInfo)) {
324
+ revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
325
+ }
326
+
327
+ // check that policy has not already been closed
328
+ if (policyInfo.closedAt.gtz()) {
329
+ revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
330
+ }
331
+
332
+ // check that policy does not have any open claims
333
+ if (policyInfo.openClaimsCount > 0) {
334
+ revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
335
+ }
336
+
337
+ // TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
338
+ if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
339
+ revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
340
+ }
341
+
342
+ // release (remaining) collateral that was blocked by policy
343
+ _poolService.releaseCollateral(
344
+ instance,
345
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
346
+ policyNftId,
347
+ policyInfo);
348
+
349
+ // update policy state to closed
350
+ policyInfo.closedAt = TimestampLib.blockTimestamp();
351
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
352
+ }
353
+
354
+
355
+ /// @dev checks that policy has been collateralized and has been activated.
356
+ /// does not check if policy has been expired or closed.
357
+ function _policyHasBeenActivated(
358
+ StateId policyState,
359
+ IPolicy.PolicyInfo memory policyInfo
360
+ )
361
+ internal
362
+ view
363
+ returns (bool)
364
+ {
365
+ if (policyState != COLLATERALIZED()) { return false; }
366
+ if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
367
+ return true;
368
+ }
369
+
370
+
371
+ /// @dev calculates the premium and updates all counters in the other services
372
+ function _calculateAndProcessPremium(
373
+ IInstance instance,
374
+ NftId applicationNftId,
375
+ IPolicy.PolicyInfo memory applicationInfo
376
+ )
377
+ internal
378
+ virtual
379
+ returns (
380
+ IPolicy.Premium memory premium
381
+ )
382
+ {
383
+ NftId productNftId = applicationInfo.productNftId;
384
+ InstanceReader instanceReader = instance.getInstanceReader();
385
+
386
+ // calculate premium details
387
+ premium = _pricingService.calculatePremium(
388
+ productNftId,
389
+ applicationInfo.riskId,
390
+ applicationInfo.sumInsuredAmount,
391
+ applicationInfo.lifetime,
392
+ applicationInfo.applicationData,
393
+ applicationInfo.bundleNftId,
394
+ applicationInfo.referralId);
395
+
396
+ // ensure the calculated premium is not higher than the expected premium from the application
397
+ if (applicationInfo.premiumAmount.toInt() < premium.premiumAmount) {
398
+ revert ErrorPolicyServicePremiumHigherThanExpected(applicationInfo.premiumAmount.toInt(), premium.premiumAmount);
399
+ }
400
+
401
+ // check if premium balance and allowance of policy holder is sufficient
402
+ {
403
+ TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
404
+ address policyHolder = getRegistry().ownerOf(applicationNftId);
405
+
406
+ _checkPremiumBalanceAndAllowance(
407
+ tokenHandler.getToken(),
408
+ address(tokenHandler),
409
+ policyHolder,
410
+ applicationInfo.premiumAmount,
411
+ AmountLib.toAmount(premium.premiumAmount));
412
+ }
413
+
414
+ // update the counters
415
+ _processSale(
416
+ instanceReader,
417
+ instance.getInstanceStore(),
418
+ productNftId,
419
+ applicationInfo.bundleNftId,
420
+ applicationInfo.referralId,
421
+ premium);
422
+ }
423
+
424
+ /// @dev checks the balance and allowance of the policy holder
425
+ function _checkPremiumBalanceAndAllowance(
426
+ IERC20Metadata token,
427
+ address tokenHandlerAddress,
428
+ address policyHolder,
429
+ Amount premiumExpectedAmount,
430
+ Amount premiumAmount
431
+ )
432
+ internal
433
+ virtual
434
+ view
435
+ {
436
+ uint256 premium = premiumAmount.toInt();
437
+ uint256 balance = token.balanceOf(policyHolder);
438
+ uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
439
+
440
+ if (balance < premium) {
441
+ revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
442
+ }
443
+
444
+ if (allowance < premium) {
445
+ revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
446
+ }
447
+ }
448
+
449
+ /// @dev update counters by calling the involved services
450
+ function _processSale(
451
+ InstanceReader instanceReader,
452
+ InstanceStore instanceStore,
453
+ NftId productNftId,
454
+ NftId bundleNftId,
455
+ ReferralId referralId,
456
+ IPolicy.Premium memory premium
457
+ )
458
+ internal
459
+ virtual
460
+ {
461
+ (
462
+ NftId distributionNftId,
463
+ address distributionWallet,
464
+ address poolWallet,
465
+ address productWallet
466
+ ) = _getDistributionNftAndWallets(
467
+ instanceReader,
468
+ productNftId);
469
+
470
+ // update product fees, distribution and pool fees
471
+ _componentService.increaseProductFees(
472
+ instanceStore,
473
+ productNftId,
474
+ AmountLib.toAmount(premium.productFeeVarAmount + premium.productFeeFixAmount));
475
+
476
+ // update distribution fees and distributor commission and pool fees
477
+ _distributionService.processSale(
478
+ distributionNftId,
479
+ referralId,
480
+ premium);
481
+
482
+ // update pool and bundle fees
483
+ _poolService.processSale(
484
+ bundleNftId,
485
+ premium);
486
+ }
487
+
488
+ /// @dev transfer the premium to the wallets the premium is distributed to
489
+ function _transferFunds(
490
+ InstanceReader instanceReader,
491
+ NftId policyNftId,
492
+ NftId productNftId,
493
+ IPolicy.Premium memory premium
494
+ )
495
+ internal
496
+ virtual
497
+ {
498
+ TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
499
+ address policyHolder = getRegistry().ownerOf(policyNftId);
500
+
501
+ (
502
+ NftId distributionNftId,
503
+ address distributionWallet,
504
+ address poolWallet,
505
+ address productWallet
506
+ ) = _getDistributionNftAndWallets(
507
+ instanceReader,
508
+ productNftId);
509
+
510
+ // TODO: centralize token handling (issue #471)
511
+ // transfer premium amounts to target wallets
512
+ tokenHandler.transfer(policyHolder, productWallet, premium.productFeeAmount);
513
+ tokenHandler.transfer(policyHolder, distributionWallet, premium.distributionFeeAndCommissionAmount);
514
+ tokenHandler.transfer(policyHolder, poolWallet, premium.poolPremiumAndFeeAmount);
515
+ }
516
+
517
+
518
+ function _getTokenHandlerAndProductWallet(
519
+ InstanceReader instanceReader,
520
+ NftId productNftId
521
+ )
522
+ internal
523
+ virtual
524
+ view
525
+ returns (
526
+ TokenHandler tokenHandler
527
+ )
528
+ {
529
+ tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
530
+ }
531
+
532
+ function _getDistributionNftAndWallets(
533
+ InstanceReader instanceReader,
534
+ NftId productNftId
535
+ )
536
+ internal
537
+ virtual
538
+ view returns (
539
+ NftId distributionNftId,
540
+ address distributionWallet,
541
+ address poolWallet,
542
+ address productWallet
543
+ )
544
+ {
545
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
546
+ distributionNftId = productInfo.distributionNftId;
547
+ distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
548
+ poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
549
+ productWallet = instanceReader.getComponentInfo(productNftId).wallet;
550
+ }
551
+
552
+
553
+ function _getDomain() internal pure override returns(ObjectType) {
554
+ return POLICY();
555
+ }
556
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {PolicyService} from "./PolicyService.sol";
7
+
8
+ contract PolicyServiceManager is ProxyManager {
9
+
10
+ PolicyService private _policyService;
11
+
12
+ /// @dev initializes proxy manager with product service implementation
13
+ constructor(
14
+ address authority,
15
+ address registryAddress,
16
+ bytes32 salt
17
+ )
18
+ ProxyManager(registryAddress)
19
+ {
20
+ PolicyService svc = new PolicyService{salt: salt}();
21
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
22
+ IVersionable versionable = deployDetermenistic(
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _policyService = PolicyService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getPolicyService()
32
+ external
33
+ view
34
+ returns (PolicyService policyService)
35
+ {
36
+ return _policyService;
37
+ }
38
+
39
+ }