@etherisc/gif-next 0.0.2-d679de9-140 → 0.0.2-d67ce7f-686

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 (708) hide show
  1. package/README.md +306 -21
  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/access → authorization}/IAccess.sol/IAccess.json +1 -1
  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/distribution/Distribution.sol/Distribution.json +1196 -0
  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/distribution/IDistributionComponent.sol/IDistributionComponent.json +943 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +945 -0
  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 +280 -1494
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +473 -1725
  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 +4 -0
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1674 -0
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1160 -0
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  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/base/Cloneable.sol/Cloneable.json +137 -0
  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 +4 -0
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  69. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  70. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  72. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  74. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  76. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  78. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  79. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  80. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  82. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  84. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  86. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  88. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  90. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1055 -0
  92. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  94. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  96. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1432 -0
  98. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  100. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1534 -0
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +842 -0
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +927 -0
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +946 -0
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1213 -0
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +1218 -0
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1652 -0
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +774 -0
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1280 -0
  122. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  124. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1339 -0
  126. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +826 -0
  128. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +256 -221
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +788 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +816 -0
  134. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  138. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IProductService.sol/IProductService.json} +207 -171
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1351 -0
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +802 -0
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  148. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  149. package/artifacts/contracts/product/Product.sol/Product.json +1238 -0
  150. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  152. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +655 -50
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +940 -0
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  162. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.json +885 -99
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1452 -0
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  173. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  178. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  179. package/artifacts/contracts/shared/Component.sol/Component.json +858 -0
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1712 -0
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  186. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  188. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  190. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
  192. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  193. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +104 -141
  194. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  195. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  196. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  197. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +37 -80
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  200. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  202. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  203. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  204. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +163 -143
  206. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  208. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  210. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +977 -0
  212. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  213. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  214. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  216. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  217. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  218. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  219. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  220. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  221. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  222. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +255 -23
  224. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  226. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  227. package/artifacts/contracts/shared/Service.sol/Service.json +507 -0
  228. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +197 -0
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  233. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  236. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  237. package/artifacts/contracts/staking/Staking.sol/Staking.json +1991 -0
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +773 -0
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  253. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  256. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  269. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  290. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  298. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  302. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  307. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  308. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  309. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  310. package/contracts/authorization/AccessAdmin.sol +591 -0
  311. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  312. package/contracts/authorization/Authorization.sol +218 -0
  313. package/contracts/authorization/IAccess.sol +48 -0
  314. package/contracts/authorization/IAccessAdmin.sol +136 -0
  315. package/contracts/authorization/IAuthorization.sol +54 -0
  316. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  317. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  318. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  319. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  320. package/contracts/distribution/BasicDistribution.sol +138 -0
  321. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  322. package/contracts/distribution/Distribution.sol +295 -0
  323. package/contracts/distribution/DistributionService.sol +336 -0
  324. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  325. package/contracts/distribution/IDistributionComponent.sol +52 -0
  326. package/contracts/distribution/IDistributionService.sol +97 -0
  327. package/contracts/instance/BundleSet.sol +126 -0
  328. package/contracts/instance/IInstance.sol +78 -44
  329. package/contracts/instance/IInstanceService.sol +92 -0
  330. package/contracts/instance/Instance.sol +238 -52
  331. package/contracts/instance/InstanceAdmin.sol +266 -0
  332. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  333. package/contracts/instance/InstanceReader.sol +405 -0
  334. package/contracts/instance/InstanceService.sol +443 -0
  335. package/contracts/instance/InstanceServiceManager.sol +40 -0
  336. package/contracts/instance/InstanceStore.sol +277 -0
  337. package/contracts/instance/base/BalanceStore.sol +123 -0
  338. package/contracts/instance/base/Cloneable.sol +28 -0
  339. package/contracts/instance/base/ObjectCounter.sol +21 -0
  340. package/contracts/instance/base/ObjectLifecycle.sol +104 -0
  341. package/contracts/instance/base/ObjectSet.sol +79 -0
  342. package/contracts/instance/module/IAccess.sol +46 -0
  343. package/contracts/instance/module/IBundle.sol +20 -0
  344. package/contracts/instance/module/IComponents.sol +47 -0
  345. package/contracts/instance/module/IDistribution.sol +41 -0
  346. package/contracts/instance/module/IPolicy.sol +84 -0
  347. package/contracts/instance/module/IRisk.sol +11 -0
  348. package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
  349. package/contracts/oracle/BasicOracle.sol +48 -0
  350. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  351. package/contracts/oracle/IOracle.sol +36 -0
  352. package/contracts/oracle/IOracleComponent.sol +33 -0
  353. package/contracts/oracle/IOracleService.sol +65 -0
  354. package/contracts/oracle/Oracle.sol +166 -0
  355. package/contracts/oracle/OracleService.sol +278 -0
  356. package/contracts/oracle/OracleServiceManager.sol +39 -0
  357. package/contracts/pool/BasicPool.sol +166 -0
  358. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  359. package/contracts/pool/BundleService.sol +437 -0
  360. package/contracts/pool/BundleServiceManager.sol +39 -0
  361. package/contracts/pool/IBundleService.sol +133 -0
  362. package/contracts/pool/IPoolComponent.sol +58 -0
  363. package/contracts/pool/IPoolService.sol +149 -0
  364. package/contracts/pool/Pool.sol +328 -0
  365. package/contracts/pool/PoolService.sol +525 -0
  366. package/contracts/pool/PoolServiceManager.sol +39 -0
  367. package/contracts/product/ApplicationService.sol +230 -0
  368. package/contracts/product/ApplicationServiceManager.sol +38 -0
  369. package/contracts/product/BasicProduct.sol +52 -0
  370. package/contracts/product/BasicProductAuthorization.sol +43 -0
  371. package/contracts/product/ClaimService.sol +424 -0
  372. package/contracts/product/ClaimServiceManager.sol +38 -0
  373. package/contracts/product/IApplicationService.sol +62 -0
  374. package/contracts/product/IClaimService.sol +100 -0
  375. package/contracts/product/IPolicyService.sol +85 -0
  376. package/contracts/product/IPricingService.sol +39 -0
  377. package/contracts/product/IProductComponent.sol +40 -0
  378. package/contracts/product/IProductService.sol +33 -0
  379. package/contracts/product/PolicyService.sol +542 -0
  380. package/contracts/product/PolicyServiceManager.sol +39 -0
  381. package/contracts/product/PricingService.sol +300 -0
  382. package/contracts/product/PricingServiceManager.sol +39 -0
  383. package/contracts/product/Product.sol +411 -0
  384. package/contracts/product/ProductService.sol +99 -0
  385. package/contracts/product/ProductServiceManager.sol +39 -0
  386. package/contracts/registry/ChainNft.sol +95 -37
  387. package/contracts/registry/IRegistry.sol +106 -29
  388. package/contracts/registry/IRegistryService.sol +69 -0
  389. package/contracts/registry/ITransferInterceptor.sol +7 -0
  390. package/contracts/registry/Registry.sol +475 -280
  391. package/contracts/registry/RegistryAdmin.sol +365 -0
  392. package/contracts/registry/RegistryService.sol +252 -0
  393. package/contracts/registry/RegistryServiceManager.sol +53 -0
  394. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  395. package/contracts/registry/ReleaseRegistry.sol +485 -0
  396. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  397. package/contracts/registry/TokenRegistry.sol +315 -0
  398. package/contracts/shared/Component.sol +281 -0
  399. package/contracts/shared/ComponentService.sol +650 -0
  400. package/contracts/shared/ComponentServiceManager.sol +35 -0
  401. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  402. package/contracts/shared/IComponent.sol +71 -0
  403. package/contracts/shared/IComponentService.sol +108 -0
  404. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  405. package/contracts/shared/IKeyValueStore.sol +54 -0
  406. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -5
  407. package/contracts/shared/INftOwnable.sol +23 -0
  408. package/contracts/shared/IPolicyHolder.sol +45 -0
  409. package/contracts/shared/IRegisterable.sol +10 -19
  410. package/contracts/shared/IRegistryLinked.sol +11 -0
  411. package/contracts/shared/IService.sol +25 -0
  412. package/contracts/shared/InitializableCustom.sol +177 -0
  413. package/contracts/shared/InitializableERC165.sol +27 -0
  414. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  415. package/contracts/shared/KeyValueStore.sol +131 -0
  416. package/contracts/shared/Lifecycle.sol +77 -0
  417. package/contracts/shared/NftIdSet.sol +65 -0
  418. package/contracts/shared/NftOwnable.sol +107 -0
  419. package/contracts/shared/PolicyHolder.sol +99 -0
  420. package/contracts/shared/Registerable.sol +54 -65
  421. package/contracts/shared/RegistryLinked.sol +43 -0
  422. package/contracts/shared/Service.sol +82 -0
  423. package/contracts/shared/TokenHandler.sol +62 -0
  424. package/contracts/staking/IStaking.sol +167 -0
  425. package/contracts/staking/IStakingService.sol +160 -0
  426. package/contracts/staking/StakeManagerLib.sol +231 -0
  427. package/contracts/staking/Staking.sol +516 -0
  428. package/contracts/staking/StakingLifecycle.sol +23 -0
  429. package/contracts/staking/StakingManager.sol +50 -0
  430. package/contracts/staking/StakingReader.sol +183 -0
  431. package/contracts/staking/StakingService.sol +407 -0
  432. package/contracts/staking/StakingServiceManager.sol +44 -0
  433. package/contracts/staking/StakingStore.sol +605 -0
  434. package/contracts/staking/TargetManagerLib.sol +207 -0
  435. package/contracts/{types → type}/AddressSet.sol +1 -1
  436. package/contracts/type/Amount.sol +135 -0
  437. package/contracts/{types → type}/Blocknumber.sol +27 -3
  438. package/contracts/type/ClaimId.sol +75 -0
  439. package/contracts/type/DistributorType.sol +55 -0
  440. package/contracts/type/Fee.sol +66 -0
  441. package/contracts/{types → type}/Key32.sol +8 -3
  442. package/contracts/{types → type}/NftId.sol +21 -15
  443. package/contracts/type/NftIdSet.sol +62 -0
  444. package/contracts/type/ObjectType.sol +271 -0
  445. package/contracts/type/PayoutId.sol +82 -0
  446. package/contracts/type/Referral.sol +90 -0
  447. package/contracts/type/RequestId.sol +75 -0
  448. package/contracts/type/RiskId.sol +43 -0
  449. package/contracts/type/RoleId.sol +174 -0
  450. package/contracts/type/Seconds.sol +93 -0
  451. package/contracts/type/Selector.sol +102 -0
  452. package/contracts/{types → type}/StateId.sol +39 -5
  453. package/contracts/type/String.sol +53 -0
  454. package/contracts/{types → type}/Timestamp.sol +38 -15
  455. package/contracts/type/UFixed.sol +351 -0
  456. package/contracts/{types → type}/Version.sol +17 -2
  457. package/contracts/upgradeability/IVersionable.sol +53 -0
  458. package/contracts/upgradeability/ProxyManager.sol +198 -0
  459. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  460. package/contracts/upgradeability/Versionable.sol +59 -0
  461. package/package.json +14 -7
  462. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  463. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  464. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  465. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  466. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  467. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  468. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  469. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  470. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  471. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  472. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  473. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  475. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  477. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  479. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  481. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  483. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  485. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  487. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  489. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  491. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  493. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  494. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  495. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  498. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  500. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  502. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  503. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  504. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  506. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  507. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  508. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  509. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  510. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  511. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  512. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  513. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  516. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  517. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  518. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  519. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  520. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  521. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  522. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  524. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  525. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  526. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  527. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  528. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  529. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  530. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  531. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  532. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  533. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  534. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  535. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  536. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  537. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  538. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  539. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  540. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  541. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  542. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  543. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  544. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  546. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  547. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  549. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  550. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  551. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  552. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  553. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  554. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  555. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  556. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  557. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  558. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  559. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  560. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  561. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  562. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  563. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  564. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  565. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  566. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  567. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  568. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  569. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  570. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -491
  572. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  573. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -376
  575. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  578. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  580. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  581. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  582. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  583. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  584. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  585. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  586. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  587. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  588. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -164
  589. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  590. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -164
  591. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  592. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  593. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  594. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  595. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  596. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  597. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  598. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  599. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  600. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -82
  601. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  602. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  603. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  604. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  605. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  606. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  607. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  608. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  609. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  610. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  611. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  612. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  613. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  615. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  616. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  617. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  618. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  619. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  621. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  622. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  623. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  624. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  625. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  627. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  628. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  629. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  631. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  632. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  633. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  634. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  635. package/contracts/components/BaseComponent.sol +0 -88
  636. package/contracts/components/IBaseComponent.sol +0 -19
  637. package/contracts/components/IPoolComponent.sol +0 -57
  638. package/contracts/components/IProductComponent.sol +0 -19
  639. package/contracts/components/Pool.sol +0 -174
  640. package/contracts/components/Product.sol +0 -117
  641. package/contracts/experiment/errors/Require.sol +0 -38
  642. package/contracts/experiment/errors/Revert.sol +0 -44
  643. package/contracts/experiment/inheritance/A.sol +0 -53
  644. package/contracts/experiment/inheritance/B.sol +0 -28
  645. package/contracts/experiment/inheritance/C.sol +0 -34
  646. package/contracts/experiment/inheritance/IA.sol +0 -13
  647. package/contracts/experiment/inheritance/IB.sol +0 -10
  648. package/contracts/experiment/inheritance/IC.sol +0 -12
  649. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  650. package/contracts/experiment/statemachine/ISM.sol +0 -25
  651. package/contracts/experiment/statemachine/README.md +0 -112
  652. package/contracts/experiment/statemachine/SM.sol +0 -57
  653. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  654. package/contracts/experiment/types/TypeA.sol +0 -47
  655. package/contracts/experiment/types/TypeB.sol +0 -29
  656. package/contracts/instance/IInstanceLinked.sol +0 -8
  657. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  658. package/contracts/instance/base/IInstanceBase.sol +0 -14
  659. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  660. package/contracts/instance/base/IService.sol +0 -15
  661. package/contracts/instance/base/InstanceBase.sol +0 -80
  662. package/contracts/instance/base/KeyValueStore.sol +0 -156
  663. package/contracts/instance/base/Lifecycle.sol +0 -95
  664. package/contracts/instance/base/ModuleBase.sol +0 -52
  665. package/contracts/instance/base/ServiceBase.sol +0 -37
  666. package/contracts/instance/module/access/Access.sol +0 -149
  667. package/contracts/instance/module/access/IAccess.sol +0 -53
  668. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  669. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  670. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  671. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  672. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  673. package/contracts/instance/module/component/IComponent.sol +0 -53
  674. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  675. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  676. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  677. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  678. package/contracts/instance/module/risk/IRisk.sol +0 -10
  679. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  680. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  681. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  682. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  683. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  684. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  685. package/contracts/instance/service/IPoolService.sol +0 -30
  686. package/contracts/instance/service/IProductService.sol +0 -58
  687. package/contracts/instance/service/PoolService.sol +0 -123
  688. package/contracts/instance/service/ProductService.sol +0 -354
  689. package/contracts/registry/IChainNft.sol +0 -21
  690. package/contracts/registry/IRegistryLinked.sol +0 -8
  691. package/contracts/shared/ERC165.sol +0 -21
  692. package/contracts/shared/IOwnable.sol +0 -6
  693. package/contracts/shared/IVersionable.sol +0 -52
  694. package/contracts/shared/Versionable.sol +0 -89
  695. package/contracts/test/TestFee.sol +0 -25
  696. package/contracts/test/TestPool.sol +0 -22
  697. package/contracts/test/TestProduct.sol +0 -44
  698. package/contracts/test/TestRegisterable.sol +0 -19
  699. package/contracts/test/TestRoleId.sol +0 -14
  700. package/contracts/test/TestService.sol +0 -32
  701. package/contracts/test/TestVersion.sol +0 -44
  702. package/contracts/test/TestVersionable.sol +0 -17
  703. package/contracts/types/ChainId.sol +0 -38
  704. package/contracts/types/Fee.sol +0 -51
  705. package/contracts/types/NftIdSet.sol +0 -60
  706. package/contracts/types/ObjectType.sol +0 -115
  707. package/contracts/types/RoleId.sol +0 -36
  708. package/contracts/types/UFixed.sol +0 -210
@@ -0,0 +1,542 @@
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 in state applied or not active
284
+ if (instanceReader.getPolicyState(policyNftId) != COLLATERALIZED() || TimestampLib.blockTimestamp() < policyInfo.activatedAt) {
285
+ revert ErrorIPolicyServicePolicyNotActive(policyNftId, instanceReader.getPolicyState(policyNftId));
286
+ }
287
+
288
+
289
+ if (expireAt.eqz()) {
290
+ expireAt = TimestampLib.blockTimestamp();
291
+ }
292
+
293
+ // check preconditions
294
+ if (expireAt >= policyInfo.expiredAt) {
295
+ revert ErrorIPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
296
+ }
297
+ if (expireAt < TimestampLib.blockTimestamp()) {
298
+ revert ErrorIPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
299
+ }
300
+ if (policyInfo.openClaimsCount > 0) {
301
+ revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
302
+ }
303
+
304
+ policyInfo.expiredAt = expireAt;
305
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
306
+
307
+ emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expireAt);
308
+
309
+ return expireAt;
310
+ }
311
+
312
+ function close(
313
+ NftId policyNftId
314
+ )
315
+ external
316
+ override
317
+ {
318
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
319
+ InstanceReader instanceReader = instance.getInstanceReader();
320
+
321
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
322
+
323
+ if (policyInfo.activatedAt.eqz()) {
324
+ revert ErrorIPolicyServicePolicyNotActivated(policyNftId);
325
+ }
326
+
327
+ StateId state = instanceReader.getPolicyState(policyNftId);
328
+ if (state != COLLATERALIZED() || TimestampLib.blockTimestamp() < policyInfo.activatedAt) {
329
+ revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
330
+ }
331
+
332
+ if (policyInfo.closedAt.gtz()) {
333
+ revert ErrorIPolicyServicePolicyAlreadyClosed(policyNftId);
334
+ }
335
+
336
+ // TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
337
+ if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
338
+ revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
339
+ }
340
+
341
+ if (policyInfo.openClaimsCount > 0) {
342
+ revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
343
+ }
344
+
345
+ policyInfo.closedAt = TimestampLib.blockTimestamp();
346
+
347
+ _poolService.releaseCollateral(
348
+ instance,
349
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
350
+ policyNftId,
351
+ policyInfo);
352
+
353
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
354
+ }
355
+
356
+
357
+ /// @dev calculates the premium and updates all counters in the other services
358
+ function _calculateAndProcessPremium(
359
+ IInstance instance,
360
+ NftId applicationNftId,
361
+ IPolicy.PolicyInfo memory applicationInfo
362
+ )
363
+ internal
364
+ virtual
365
+ returns (
366
+ IPolicy.Premium memory premium
367
+ )
368
+ {
369
+ NftId productNftId = applicationInfo.productNftId;
370
+ InstanceReader instanceReader = instance.getInstanceReader();
371
+
372
+ // calculate premium details
373
+ premium = _pricingService.calculatePremium(
374
+ productNftId,
375
+ applicationInfo.riskId,
376
+ applicationInfo.sumInsuredAmount,
377
+ applicationInfo.lifetime,
378
+ applicationInfo.applicationData,
379
+ applicationInfo.bundleNftId,
380
+ applicationInfo.referralId);
381
+
382
+ // ensure the calculated premium is not higher than the expected premium from the application
383
+ if (applicationInfo.premiumAmount.toInt() < premium.premiumAmount) {
384
+ revert ErrorPolicyServicePremiumHigherThanExpected(applicationInfo.premiumAmount.toInt(), premium.premiumAmount);
385
+ }
386
+
387
+ // check if premium balance and allowance of policy holder is sufficient
388
+ {
389
+ TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
390
+ address policyHolder = getRegistry().ownerOf(applicationNftId);
391
+
392
+ _checkPremiumBalanceAndAllowance(
393
+ tokenHandler.getToken(),
394
+ address(tokenHandler),
395
+ policyHolder,
396
+ applicationInfo.premiumAmount,
397
+ AmountLib.toAmount(premium.premiumAmount));
398
+ }
399
+
400
+ // update the counters
401
+ _processSale(
402
+ instanceReader,
403
+ instance.getInstanceStore(),
404
+ productNftId,
405
+ applicationInfo.bundleNftId,
406
+ applicationInfo.referralId,
407
+ premium);
408
+ }
409
+
410
+ /// @dev checks the balance and allowance of the policy holder
411
+ function _checkPremiumBalanceAndAllowance(
412
+ IERC20Metadata token,
413
+ address tokenHandlerAddress,
414
+ address policyHolder,
415
+ Amount premiumExpectedAmount,
416
+ Amount premiumAmount
417
+ )
418
+ internal
419
+ virtual
420
+ view
421
+ {
422
+ uint256 premium = premiumAmount.toInt();
423
+ uint256 balance = token.balanceOf(policyHolder);
424
+ uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
425
+
426
+ if (balance < premium) {
427
+ revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
428
+ }
429
+
430
+ if (allowance < premium) {
431
+ revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
432
+ }
433
+ }
434
+
435
+ /// @dev update counters by calling the involved services
436
+ function _processSale(
437
+ InstanceReader instanceReader,
438
+ InstanceStore instanceStore,
439
+ NftId productNftId,
440
+ NftId bundleNftId,
441
+ ReferralId referralId,
442
+ IPolicy.Premium memory premium
443
+ )
444
+ internal
445
+ virtual
446
+ {
447
+ (
448
+ NftId distributionNftId,
449
+ address distributionWallet,
450
+ address poolWallet,
451
+ address productWallet
452
+ ) = _getDistributionNftAndWallets(
453
+ instanceReader,
454
+ productNftId);
455
+
456
+ // update product fees, distribution and pool fees
457
+ _componentService.increaseProductFees(
458
+ instanceStore,
459
+ productNftId,
460
+ AmountLib.toAmount(premium.productFeeVarAmount + premium.productFeeFixAmount));
461
+
462
+ // update distribution fees and distributor commission and pool fees
463
+ _distributionService.processSale(
464
+ distributionNftId,
465
+ referralId,
466
+ premium);
467
+
468
+ // update pool and bundle fees
469
+ _poolService.processSale(
470
+ bundleNftId,
471
+ premium);
472
+ }
473
+
474
+ /// @dev transfer the premium to the wallets the premium is distributed to
475
+ function _transferFunds(
476
+ InstanceReader instanceReader,
477
+ NftId policyNftId,
478
+ NftId productNftId,
479
+ IPolicy.Premium memory premium
480
+ )
481
+ internal
482
+ virtual
483
+ {
484
+ TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
485
+ address policyHolder = getRegistry().ownerOf(policyNftId);
486
+
487
+ (
488
+ NftId distributionNftId,
489
+ address distributionWallet,
490
+ address poolWallet,
491
+ address productWallet
492
+ ) = _getDistributionNftAndWallets(
493
+ instanceReader,
494
+ productNftId);
495
+
496
+ // TODO: centralize token handling (issue #471)
497
+ // transfer premium amounts to target wallets
498
+ tokenHandler.transfer(policyHolder, productWallet, premium.productFeeAmount);
499
+ tokenHandler.transfer(policyHolder, distributionWallet, premium.distributionFeeAndCommissionAmount);
500
+ tokenHandler.transfer(policyHolder, poolWallet, premium.poolPremiumAndFeeAmount);
501
+ }
502
+
503
+
504
+ function _getTokenHandlerAndProductWallet(
505
+ InstanceReader instanceReader,
506
+ NftId productNftId
507
+ )
508
+ internal
509
+ virtual
510
+ view
511
+ returns (
512
+ TokenHandler tokenHandler
513
+ )
514
+ {
515
+ tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
516
+ }
517
+
518
+ function _getDistributionNftAndWallets(
519
+ InstanceReader instanceReader,
520
+ NftId productNftId
521
+ )
522
+ internal
523
+ virtual
524
+ view returns (
525
+ NftId distributionNftId,
526
+ address distributionWallet,
527
+ address poolWallet,
528
+ address productWallet
529
+ )
530
+ {
531
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
532
+ distributionNftId = productInfo.distributionNftId;
533
+ distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
534
+ poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
535
+ productWallet = instanceReader.getComponentInfo(productNftId).wallet;
536
+ }
537
+
538
+
539
+ function _getDomain() internal pure override returns(ObjectType) {
540
+ return POLICY();
541
+ }
542
+ }
@@ -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
+ }