@etherisc/gif-next 0.0.2-c576a00-897 → 0.0.2-c5f9a75-197

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 (750) hide show
  1. package/README.md +309 -21
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1234 -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 +1013 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1012 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1405 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +906 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +932 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1712 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +287 -1652
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +373 -1995
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1623 -0
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1850 -0
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1053 -0
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +714 -0
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3587 -0
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  84. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  87. package/artifacts/contracts/{experiment/kvstore → instance/module}/IBundle.sol/IBundle.json +1 -1
  88. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  89. package/artifacts/contracts/instance/module/{bundle/IBundle.sol/IBundle.json → IComponents.sol/IComponents.json} +2 -2
  90. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  91. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  92. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  93. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  94. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  96. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  97. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  98. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  100. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  102. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  103. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  105. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  108. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +871 -0
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +927 -0
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +710 -0
  114. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  115. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  119. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1367 -0
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  121. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +802 -0
  122. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  123. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +907 -0
  124. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  125. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +909 -0
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  127. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1198 -0
  128. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/Pool.sol/Pool.json +1034 -0
  130. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  131. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1474 -0
  132. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +726 -0
  134. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  135. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +737 -0
  136. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  137. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +698 -0
  138. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  139. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  140. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  141. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  142. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  143. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1346 -0
  144. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +814 -0
  146. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +259 -219
  148. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  149. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +886 -0
  150. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  151. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +867 -0
  152. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  153. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  154. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  155. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +948 -0
  156. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  157. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IRiskService.sol/IRiskService.json} +202 -178
  158. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  159. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1239 -0
  160. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +770 -0
  162. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  163. package/artifacts/contracts/product/PricingService.sol/PricingService.json +865 -0
  164. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  165. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +746 -0
  166. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  167. package/artifacts/contracts/product/Product.sol/Product.json +1054 -0
  168. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  169. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  170. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  171. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  172. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +242 -12
  174. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +924 -119
  176. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  177. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +940 -0
  178. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  179. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  180. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/Registry.sol/Registry.json +1343 -220
  182. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  183. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1858 -0
  184. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  185. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1345 -0
  186. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  187. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +701 -0
  188. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  189. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  190. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  191. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  192. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  193. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  194. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  195. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  196. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  197. package/artifacts/contracts/shared/Component.sol/Component.json +685 -0
  198. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  199. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1573 -0
  200. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  201. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +794 -0
  202. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  203. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +432 -0
  204. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  205. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  206. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +605 -0
  208. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  209. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  210. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  211. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  212. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  213. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  214. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/ILifecycle.sol/ILifecycle.json} +37 -51
  216. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  217. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +37 -80
  218. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  219. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  220. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  222. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  223. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  224. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  225. package/artifacts/contracts/{instance/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +168 -135
  226. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  227. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  228. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  229. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  230. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  231. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +793 -0
  232. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  233. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  234. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/{instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.json → shared/Lifecycle.sol/Lifecycle.json} +19 -68
  236. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  237. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  238. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  239. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +193 -0
  240. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  241. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  242. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  243. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +170 -27
  244. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  245. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  246. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  247. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/Service.sol/Service.json} +202 -166
  248. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +469 -0
  250. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  251. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  252. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  253. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  254. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  255. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  256. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  258. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  259. package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -0
  260. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  262. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +750 -0
  264. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  266. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  267. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1236 -0
  268. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  269. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  270. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  272. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  273. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  274. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  275. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  276. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  278. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  280. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  282. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  284. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  286. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  288. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  290. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  291. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  292. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  294. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  296. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  298. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  300. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  302. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  304. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  306. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  308. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  310. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  312. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  314. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  316. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  318. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  320. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  322. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  324. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  325. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  326. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  327. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  328. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  329. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  330. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  331. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  332. package/contracts/authorization/AccessAdmin.sol +592 -0
  333. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  334. package/contracts/authorization/Authorization.sol +217 -0
  335. package/contracts/authorization/IAccess.sol +48 -0
  336. package/contracts/authorization/IAccessAdmin.sol +135 -0
  337. package/contracts/authorization/IAuthorization.sol +54 -0
  338. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  339. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  340. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  341. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  342. package/contracts/distribution/BasicDistribution.sol +138 -0
  343. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  344. package/contracts/distribution/Distribution.sol +295 -0
  345. package/contracts/distribution/DistributionService.sol +336 -0
  346. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  347. package/contracts/distribution/IDistributionComponent.sol +52 -0
  348. package/contracts/distribution/IDistributionService.sol +101 -0
  349. package/contracts/examples/fire/FirePool.sol +75 -0
  350. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  351. package/contracts/examples/fire/FireProduct.sol +323 -0
  352. package/contracts/examples/fire/FireProductAuthorization.sol +36 -0
  353. package/contracts/examples/fire/FireUSD.sol +26 -0
  354. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  355. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  356. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  357. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  358. package/contracts/instance/BundleSet.sol +126 -0
  359. package/contracts/instance/IInstance.sol +57 -47
  360. package/contracts/instance/IInstanceService.sol +92 -0
  361. package/contracts/instance/Instance.sol +216 -53
  362. package/contracts/instance/InstanceAdmin.sol +285 -0
  363. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  364. package/contracts/instance/InstanceReader.sol +430 -0
  365. package/contracts/instance/InstanceService.sol +466 -0
  366. package/contracts/instance/InstanceServiceManager.sol +39 -0
  367. package/contracts/instance/InstanceStore.sol +287 -0
  368. package/contracts/instance/base/BalanceStore.sol +123 -0
  369. package/contracts/instance/base/Cloneable.sol +28 -0
  370. package/contracts/instance/base/ObjectCounter.sol +21 -0
  371. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  372. package/contracts/instance/base/ObjectSet.sol +79 -0
  373. package/contracts/instance/module/IAccess.sol +46 -0
  374. package/contracts/instance/module/IBundle.sol +20 -0
  375. package/contracts/instance/module/IComponents.sol +46 -0
  376. package/contracts/instance/module/IDistribution.sol +41 -0
  377. package/contracts/instance/module/IPolicy.sol +84 -0
  378. package/contracts/instance/module/IRisk.sol +11 -0
  379. package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
  380. package/contracts/oracle/BasicOracle.sol +48 -0
  381. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  382. package/contracts/oracle/IOracle.sol +36 -0
  383. package/contracts/oracle/IOracleComponent.sol +33 -0
  384. package/contracts/oracle/IOracleService.sol +65 -0
  385. package/contracts/oracle/Oracle.sol +167 -0
  386. package/contracts/oracle/OracleService.sol +281 -0
  387. package/contracts/oracle/OracleServiceManager.sol +39 -0
  388. package/contracts/pool/BasicPool.sol +166 -0
  389. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  390. package/contracts/pool/BundleService.sol +438 -0
  391. package/contracts/pool/BundleServiceManager.sol +39 -0
  392. package/contracts/pool/IBundleService.sol +134 -0
  393. package/contracts/pool/IPoolComponent.sol +58 -0
  394. package/contracts/pool/IPoolService.sol +160 -0
  395. package/contracts/pool/Pool.sol +326 -0
  396. package/contracts/pool/PoolService.sol +508 -0
  397. package/contracts/pool/PoolServiceManager.sol +39 -0
  398. package/contracts/product/ApplicationService.sol +247 -0
  399. package/contracts/product/ApplicationServiceManager.sol +38 -0
  400. package/contracts/product/BasicProduct.sol +53 -0
  401. package/contracts/product/BasicProductAuthorization.sol +43 -0
  402. package/contracts/product/ClaimService.sol +546 -0
  403. package/contracts/product/ClaimServiceManager.sol +38 -0
  404. package/contracts/product/IApplicationService.sol +63 -0
  405. package/contracts/product/IClaimService.sol +122 -0
  406. package/contracts/product/IPolicyService.sol +77 -0
  407. package/contracts/product/IPricingService.sol +39 -0
  408. package/contracts/product/IProductComponent.sol +39 -0
  409. package/contracts/product/IRiskService.sol +33 -0
  410. package/contracts/product/PolicyService.sol +651 -0
  411. package/contracts/product/PolicyServiceManager.sol +39 -0
  412. package/contracts/product/PricingService.sol +300 -0
  413. package/contracts/product/PricingServiceManager.sol +39 -0
  414. package/contracts/product/Product.sol +425 -0
  415. package/contracts/product/RiskService.sol +96 -0
  416. package/contracts/product/RiskServiceManager.sol +39 -0
  417. package/contracts/registry/ChainNft.sol +131 -40
  418. package/contracts/registry/IRegistry.sol +140 -29
  419. package/contracts/registry/IRegistryService.sol +69 -0
  420. package/contracts/registry/ITransferInterceptor.sol +7 -0
  421. package/contracts/registry/Registry.sol +603 -282
  422. package/contracts/registry/RegistryAdmin.sol +464 -0
  423. package/contracts/registry/RegistryService.sol +252 -0
  424. package/contracts/registry/RegistryServiceManager.sol +53 -0
  425. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  426. package/contracts/registry/ReleaseRegistry.sol +491 -0
  427. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  428. package/contracts/registry/TokenRegistry.sol +315 -0
  429. package/contracts/shared/Component.sol +268 -0
  430. package/contracts/shared/ComponentService.sol +641 -0
  431. package/contracts/shared/ComponentServiceManager.sol +38 -0
  432. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  433. package/contracts/shared/ContractLib.sol +38 -0
  434. package/contracts/shared/IComponent.sol +70 -0
  435. package/contracts/shared/IComponentService.sol +108 -0
  436. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  437. package/contracts/shared/IKeyValueStore.sol +54 -0
  438. package/contracts/shared/ILifecycle.sol +29 -0
  439. package/contracts/shared/INftOwnable.sol +23 -0
  440. package/contracts/shared/IPolicyHolder.sol +35 -0
  441. package/contracts/shared/IRegisterable.sol +10 -19
  442. package/contracts/shared/IRegistryLinked.sol +11 -0
  443. package/contracts/shared/IService.sol +25 -0
  444. package/contracts/shared/InitializableCustom.sol +177 -0
  445. package/contracts/shared/InitializableERC165.sol +27 -0
  446. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  447. package/contracts/shared/KeyValueStore.sol +131 -0
  448. package/contracts/shared/Lifecycle.sol +77 -0
  449. package/contracts/shared/NftIdSet.sol +65 -0
  450. package/contracts/shared/NftOwnable.sol +107 -0
  451. package/contracts/shared/PolicyHolder.sol +58 -0
  452. package/contracts/shared/Registerable.sol +54 -65
  453. package/contracts/shared/RegistryLinked.sol +44 -0
  454. package/contracts/shared/Service.sol +87 -0
  455. package/contracts/shared/TokenHandler.sol +139 -0
  456. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  457. package/contracts/staking/IStaking.sol +168 -0
  458. package/contracts/staking/IStakingService.sol +160 -0
  459. package/contracts/staking/StakeManagerLib.sol +224 -0
  460. package/contracts/staking/Staking.sol +498 -0
  461. package/contracts/staking/StakingLifecycle.sol +23 -0
  462. package/contracts/staking/StakingManager.sol +52 -0
  463. package/contracts/staking/StakingReader.sol +183 -0
  464. package/contracts/staking/StakingService.sol +407 -0
  465. package/contracts/staking/StakingServiceManager.sol +44 -0
  466. package/contracts/staking/StakingStore.sol +605 -0
  467. package/contracts/staking/TargetManagerLib.sol +211 -0
  468. package/contracts/{types → type}/AddressSet.sol +1 -1
  469. package/contracts/type/Amount.sol +135 -0
  470. package/contracts/{types → type}/Blocknumber.sol +26 -18
  471. package/contracts/type/ClaimId.sol +75 -0
  472. package/contracts/type/DistributorType.sol +55 -0
  473. package/contracts/type/Fee.sol +66 -0
  474. package/contracts/type/Key32.sol +50 -0
  475. package/contracts/type/NftId.sol +79 -0
  476. package/contracts/type/NftIdSet.sol +62 -0
  477. package/contracts/type/ObjectType.sol +275 -0
  478. package/contracts/type/PayoutId.sol +82 -0
  479. package/contracts/type/Referral.sol +90 -0
  480. package/contracts/type/RequestId.sol +75 -0
  481. package/contracts/type/RiskId.sol +57 -0
  482. package/contracts/type/RoleId.sol +174 -0
  483. package/contracts/type/Seconds.sol +101 -0
  484. package/contracts/type/Selector.sol +102 -0
  485. package/contracts/{types → type}/StateId.sol +47 -6
  486. package/contracts/type/String.sol +53 -0
  487. package/contracts/{types → type}/Timestamp.sol +38 -15
  488. package/contracts/type/UFixed.sol +351 -0
  489. package/contracts/{types → type}/Version.sol +17 -2
  490. package/contracts/upgradeability/IVersionable.sol +53 -0
  491. package/contracts/upgradeability/ProxyManager.sol +231 -0
  492. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  493. package/contracts/upgradeability/Versionable.sol +59 -0
  494. package/package.json +14 -7
  495. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  496. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  497. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  498. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  499. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  500. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  501. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  502. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  503. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  504. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  505. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  506. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  508. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  510. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  512. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  514. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  516. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  518. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  520. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  521. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  522. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  523. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  524. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  525. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  526. package/artifacts/contracts/experiment/kvstore/BundleModuleStore.sol/BundleModuleStore.dbg.json +0 -4
  527. package/artifacts/contracts/experiment/kvstore/BundleModuleStore.sol/BundleModuleStore.json +0 -543
  528. package/artifacts/contracts/experiment/kvstore/IBundle.sol/IBundle.dbg.json +0 -4
  529. package/artifacts/contracts/experiment/kvstore/KeyMapper.sol/KeyMapper.dbg.json +0 -4
  530. package/artifacts/contracts/experiment/kvstore/KeyMapper.sol/KeyMapper.json +0 -185
  531. package/artifacts/contracts/experiment/kvstore/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  532. package/artifacts/contracts/experiment/kvstore/KeyValueStore.sol/KeyValueStore.json +0 -383
  533. package/artifacts/contracts/experiment/kvstore/KvStore.sol/KvStore.dbg.json +0 -4
  534. package/artifacts/contracts/experiment/kvstore/KvStore.sol/KvStore.json +0 -1064
  535. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  536. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  537. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  538. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  539. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  540. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  541. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  542. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  543. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  544. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  545. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  546. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  547. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  548. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  549. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  550. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  551. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  552. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  554. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  555. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  556. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  557. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  558. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  559. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -276
  560. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  561. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  562. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -276
  563. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  564. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  565. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  566. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  567. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  568. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  569. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  570. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  571. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  572. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  573. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  574. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  575. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  576. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  577. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  578. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  579. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  580. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  581. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  582. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  583. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  584. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  585. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  586. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  587. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  588. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  589. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  590. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  591. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  592. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  593. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -167
  594. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  595. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -185
  596. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  597. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  598. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  599. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  600. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  601. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  602. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  603. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  604. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  605. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -491
  606. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  607. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  608. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  609. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  610. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  611. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  612. package/artifacts/contracts/instance/service/IService.sol/IService.json +0 -300
  613. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  614. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  615. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  616. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  617. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  618. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.json +0 -300
  619. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  620. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  621. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  622. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  623. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  624. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  625. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  626. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  627. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -164
  628. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  629. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -164
  630. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  631. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  632. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  633. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  634. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  635. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  636. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  637. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  638. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  639. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -82
  640. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  641. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  642. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  643. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  644. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  645. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  646. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  647. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  648. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  649. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  650. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -212
  652. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  653. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  654. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  656. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  658. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  659. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  660. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  662. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  664. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  665. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  666. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  668. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  669. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  670. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  671. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  672. package/contracts/components/BaseComponent.sol +0 -89
  673. package/contracts/components/IBaseComponent.sol +0 -19
  674. package/contracts/components/IPoolComponent.sol +0 -57
  675. package/contracts/components/IProductComponent.sol +0 -19
  676. package/contracts/components/Pool.sol +0 -174
  677. package/contracts/components/Product.sol +0 -117
  678. package/contracts/experiment/errors/Require.sol +0 -38
  679. package/contracts/experiment/errors/Revert.sol +0 -44
  680. package/contracts/experiment/inheritance/A.sol +0 -53
  681. package/contracts/experiment/inheritance/B.sol +0 -28
  682. package/contracts/experiment/inheritance/C.sol +0 -34
  683. package/contracts/experiment/inheritance/IA.sol +0 -13
  684. package/contracts/experiment/inheritance/IB.sol +0 -10
  685. package/contracts/experiment/inheritance/IC.sol +0 -12
  686. package/contracts/experiment/kvstore/BundleModuleStore.sol +0 -93
  687. package/contracts/experiment/kvstore/IBundle.sol +0 -22
  688. package/contracts/experiment/kvstore/KeyMapper.sol +0 -40
  689. package/contracts/experiment/kvstore/KeyValueStore.sol +0 -156
  690. package/contracts/experiment/kvstore/KvStore.sol +0 -195
  691. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  692. package/contracts/experiment/statemachine/ISM.sol +0 -25
  693. package/contracts/experiment/statemachine/README.md +0 -112
  694. package/contracts/experiment/statemachine/SM.sol +0 -57
  695. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  696. package/contracts/experiment/types/TypeA.sol +0 -47
  697. package/contracts/experiment/types/TypeB.sol +0 -29
  698. package/contracts/instance/IInstanceLinked.sol +0 -8
  699. package/contracts/instance/IServiceLinked.sol +0 -12
  700. package/contracts/instance/InstanceBase.sol +0 -71
  701. package/contracts/instance/module/access/Access.sol +0 -149
  702. package/contracts/instance/module/access/IAccess.sol +0 -53
  703. package/contracts/instance/module/bundle/BundleModule.sol +0 -228
  704. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  705. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  706. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  707. package/contracts/instance/module/component/ComponentModule.sol +0 -103
  708. package/contracts/instance/module/component/IComponent.sol +0 -53
  709. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  710. package/contracts/instance/module/lifecycle/LifecycleModule.sol +0 -89
  711. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  712. package/contracts/instance/module/policy/PolicyModule.sol +0 -84
  713. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  714. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  715. package/contracts/instance/module/risk/IRisk.sol +0 -39
  716. package/contracts/instance/module/risk/RiskModule.sol +0 -55
  717. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  718. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  719. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  720. package/contracts/instance/service/ComponentOwnerService.sol +0 -171
  721. package/contracts/instance/service/ComponentServiceBase.sol +0 -41
  722. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  723. package/contracts/instance/service/IPoolService.sol +0 -30
  724. package/contracts/instance/service/IProductService.sol +0 -58
  725. package/contracts/instance/service/IService.sol +0 -15
  726. package/contracts/instance/service/PoolService.sol +0 -123
  727. package/contracts/instance/service/ProductService.sol +0 -355
  728. package/contracts/instance/service/ServiceBase.sol +0 -39
  729. package/contracts/registry/IChainNft.sol +0 -21
  730. package/contracts/registry/IRegistryLinked.sol +0 -8
  731. package/contracts/shared/ERC165.sol +0 -21
  732. package/contracts/shared/IOwnable.sol +0 -6
  733. package/contracts/shared/IVersionable.sol +0 -52
  734. package/contracts/shared/Versionable.sol +0 -89
  735. package/contracts/test/TestFee.sol +0 -25
  736. package/contracts/test/TestPool.sol +0 -22
  737. package/contracts/test/TestProduct.sol +0 -44
  738. package/contracts/test/TestRegisterable.sol +0 -19
  739. package/contracts/test/TestRoleId.sol +0 -14
  740. package/contracts/test/TestService.sol +0 -32
  741. package/contracts/test/TestVersion.sol +0 -44
  742. package/contracts/test/TestVersionable.sol +0 -17
  743. package/contracts/types/ChainId.sol +0 -38
  744. package/contracts/types/Fee.sol +0 -51
  745. package/contracts/types/NftId.sol +0 -57
  746. package/contracts/types/NftIdSet.sol +0 -60
  747. package/contracts/types/ObjectType.sol +0 -119
  748. package/contracts/types/RiskId.sol +0 -26
  749. package/contracts/types/RoleId.sol +0 -36
  750. package/contracts/types/UFixed.sol +0 -206
@@ -0,0 +1,651 @@
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, PAID} 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 {ContractLib} from "../shared/ContractLib.sol";
25
+ import {IApplicationService} from "./IApplicationService.sol";
26
+ import {IBundleService} from "../pool/IBundleService.sol";
27
+ import {IClaimService} from "./IClaimService.sol";
28
+ import {IComponentService} from "../shared/IComponentService.sol";
29
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
30
+ import {InstanceReader} from "../instance/InstanceReader.sol";
31
+ import {InstanceStore} from "../instance/InstanceStore.sol";
32
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
33
+ import {IPolicyService} from "./IPolicyService.sol";
34
+ import {IPoolService} from "../pool/IPoolService.sol";
35
+ import {IPricingService} from "./IPricingService.sol";
36
+
37
+ contract PolicyService is
38
+ ComponentVerifyingService,
39
+ IPolicyService
40
+ {
41
+ using NftIdLib for NftId;
42
+ using TimestampLib for Timestamp;
43
+
44
+ IApplicationService internal _applicationService;
45
+ IComponentService internal _componentService;
46
+ IBundleService internal _bundleService;
47
+ IClaimService internal _claimService;
48
+ IDistributionService internal _distributionService;
49
+ IPoolService internal _poolService;
50
+ IPricingService internal _pricingService;
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 authority
63
+ ) = abi.decode(data, (address, address));
64
+
65
+ _initializeService(registryAddress, authority, owner);
66
+
67
+ VersionPart majorVersion = getVersion().toMajorPart();
68
+ _applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
69
+ _bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
70
+ _componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
71
+ _claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
72
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
73
+ _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
74
+ _pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
75
+
76
+ _registerInterface(type(IPolicyService).interfaceId);
77
+ }
78
+
79
+
80
+ function decline(
81
+ NftId applicationNftId // = policyNftId
82
+ )
83
+ external
84
+ virtual
85
+ nonReentrant()
86
+ {
87
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
88
+ InstanceReader instanceReader = instance.getInstanceReader();
89
+
90
+ // check policy is in state applied
91
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
92
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
93
+ }
94
+
95
+ // check policy matches with calling product
96
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
97
+ if(applicationInfo.productNftId != productNftId) {
98
+ revert ErrorPolicyServicePolicyProductMismatch(
99
+ applicationNftId,
100
+ applicationInfo.productNftId,
101
+ productNftId);
102
+ }
103
+
104
+
105
+ // store updated policy info
106
+ instance.getInstanceStore().updatePolicyState(
107
+ applicationNftId,
108
+ DECLINED());
109
+
110
+ emit LogPolicyServicePolicyDeclined(applicationNftId);
111
+ }
112
+
113
+
114
+ /// @inheritdoc IPolicyService
115
+ function createPolicy(
116
+ NftId applicationNftId, // = policyNftId
117
+ Timestamp activateAt
118
+ )
119
+ external
120
+ virtual
121
+ nonReentrant()
122
+ {
123
+ // check caller is registered product
124
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
125
+ InstanceReader instanceReader = instance.getInstanceReader();
126
+
127
+ // check policy is in state applied
128
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
129
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
130
+ }
131
+
132
+ // check policy matches with calling product
133
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
134
+ if(applicationInfo.productNftId != productNftId) {
135
+ revert ErrorPolicyServicePolicyProductMismatch(
136
+ applicationNftId,
137
+ applicationInfo.productNftId,
138
+ productNftId);
139
+ }
140
+
141
+ // actual collateralizaion
142
+ _poolService.lockCollateral(
143
+ instance,
144
+ address(instanceReader.getComponentInfo(productNftId).token),
145
+ productNftId,
146
+ applicationNftId,
147
+ applicationInfo.bundleNftId,
148
+ applicationInfo.sumInsuredAmount);
149
+
150
+ // optional activation of policy
151
+ if(activateAt > zeroTimestamp()) {
152
+ applicationInfo = _activate(
153
+ applicationNftId,
154
+ applicationInfo,
155
+ activateAt);
156
+ }
157
+
158
+ // update policy and set state to collateralized
159
+ instance.getInstanceStore().updatePolicy(
160
+ applicationNftId,
161
+ applicationInfo,
162
+ COLLATERALIZED());
163
+
164
+ // calculate and store premium
165
+ IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
166
+ productNftId,
167
+ applicationInfo.riskId,
168
+ applicationInfo.sumInsuredAmount,
169
+ applicationInfo.lifetime,
170
+ applicationInfo.applicationData,
171
+ applicationInfo.bundleNftId,
172
+ applicationInfo.referralId);
173
+
174
+ instance.getInstanceStore().createPremium(
175
+ applicationNftId,
176
+ premium);
177
+
178
+ // update referral counter
179
+ {
180
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
181
+
182
+ if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
183
+ _distributionService.processReferral(
184
+ productInfo.distributionNftId,
185
+ applicationInfo.referralId);
186
+ }
187
+ }
188
+
189
+ // log policy creation before interactions with token and policy holder
190
+ emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
191
+
192
+ // TODO add calling pool contract if it needs to validate application
193
+
194
+ // callback to policy holder if applicable
195
+ _policyHolderPolicyActivated(applicationNftId, activateAt);
196
+ }
197
+
198
+
199
+ /// @inheritdoc IPolicyService
200
+ function collectPremium(
201
+ NftId policyNftId,
202
+ Timestamp activateAt
203
+ )
204
+ external
205
+ virtual
206
+ nonReentrant()
207
+ {
208
+ // check caller is registered product
209
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
210
+ InstanceReader instanceReader = instance.getInstanceReader();
211
+ StateId stateId = instanceReader.getPolicyState(policyNftId);
212
+
213
+ // check policy is in state collateralized or active
214
+ if (!(stateId == COLLATERALIZED())) {
215
+ revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
216
+ }
217
+
218
+ // check if premium is already collected
219
+ if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
220
+ revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
221
+ }
222
+
223
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
224
+ IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
225
+
226
+ _processPremium(
227
+ instance,
228
+ policyNftId,
229
+ policyInfo,
230
+ premium);
231
+
232
+ // optionally activate policy
233
+ if(activateAt.gtz()) {
234
+ policyInfo = _activate(policyNftId, policyInfo, activateAt);
235
+ }
236
+
237
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
238
+ instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
239
+
240
+ // log premium collection before interactions with token
241
+ emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
242
+
243
+ _transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
244
+ }
245
+
246
+ /// @inheritdoc IPolicyService
247
+ function activate(NftId policyNftId, Timestamp activateAt)
248
+ external
249
+ virtual
250
+ nonReentrant()
251
+ {
252
+ // check caller is registered product
253
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
254
+ InstanceReader instanceReader = instance.getInstanceReader();
255
+
256
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
257
+ policyInfo = _activate(policyNftId, policyInfo, activateAt);
258
+
259
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
260
+
261
+ // log policy activation before interactions with policy holder
262
+ emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
263
+
264
+ // callback to policy holder if applicable
265
+ _policyHolderPolicyActivated(policyNftId, activateAt);
266
+ }
267
+
268
+
269
+ /// @inheritdoc IPolicyService
270
+ function expire(
271
+ NftId policyNftId,
272
+ Timestamp expireAt
273
+ )
274
+ external
275
+ virtual
276
+ nonReentrant()
277
+ returns (Timestamp expiredAt)
278
+ {
279
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
280
+ InstanceReader instanceReader = instance.getInstanceReader();
281
+
282
+ // check policy matches with calling product
283
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
284
+ if(policyInfo.productNftId != productNftId) {
285
+ revert ErrorPolicyServicePolicyProductMismatch(
286
+ policyNftId,
287
+ policyInfo.productNftId,
288
+ productNftId);
289
+ }
290
+
291
+ // check policy is active
292
+ StateId policyState = instanceReader.getPolicyState(policyNftId);
293
+ if (!_policyHasBeenActivated(policyState, policyInfo)) {
294
+ revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
295
+ }
296
+
297
+ // set return value to provided timestamp
298
+ expiredAt = expireAt;
299
+
300
+ // update expiredAt to current block timestamp if not set
301
+ if (expiredAt.eqz()) {
302
+ expiredAt = TimestampLib.blockTimestamp();
303
+ }
304
+
305
+ // check expiredAt represents a valid expiry time
306
+ if (expiredAt >= policyInfo.expiredAt) {
307
+ revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
308
+ }
309
+ if (expiredAt < TimestampLib.blockTimestamp()) {
310
+ revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
311
+ }
312
+
313
+ // update policyInfo with new expiredAt timestamp
314
+ Timestamp originalExpiredAt = policyInfo.expiredAt;
315
+ policyInfo.expiredAt = expiredAt;
316
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
317
+
318
+ emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
319
+
320
+ // callback to policy holder if applicable
321
+ _policyHolderPolicyExpired(policyNftId, expiredAt);
322
+ }
323
+
324
+
325
+ function close(
326
+ NftId policyNftId
327
+ )
328
+ external
329
+ virtual
330
+ nonReentrant()
331
+ {
332
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
333
+ InstanceReader instanceReader = instance.getInstanceReader();
334
+
335
+ // check that policy has been activated
336
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
337
+ StateId policyState = instanceReader.getPolicyState(policyNftId);
338
+ if (!_policyHasBeenActivated(policyState, policyInfo)) {
339
+ revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
340
+ }
341
+
342
+ // check that policy has not already been closed
343
+ if (policyInfo.closedAt.gtz()) {
344
+ revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
345
+ }
346
+
347
+ // check that policy does not have any open claims
348
+ if (policyInfo.openClaimsCount > 0) {
349
+ revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
350
+ }
351
+
352
+ // TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
353
+ // TODO consider to remove requirement for fully paid premiums altogether
354
+ if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
355
+ revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
356
+ }
357
+
358
+ // release (remaining) collateral that was blocked by policy
359
+ _poolService.releaseCollateral(
360
+ instance,
361
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
362
+ policyNftId,
363
+ policyInfo);
364
+
365
+ // TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
366
+
367
+ // update policy state to closed
368
+ policyInfo.closedAt = TimestampLib.blockTimestamp();
369
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
370
+
371
+ emit LogPolicyServicePolicyClosed(policyNftId);
372
+ }
373
+
374
+
375
+ /// @dev calculates the premium and updates all counters in the other services
376
+ function _processPremium(
377
+ IInstance instance,
378
+ NftId applicationNftId,
379
+ IPolicy.PolicyInfo memory applicationInfo,
380
+ IPolicy.PremiumInfo memory premium
381
+ )
382
+ internal
383
+ virtual
384
+ {
385
+ NftId productNftId = applicationInfo.productNftId;
386
+ InstanceReader instanceReader = instance.getInstanceReader();
387
+
388
+ // check if premium balance and allowance of policy holder is sufficient
389
+ {
390
+ TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
391
+ address policyHolder = getRegistry().ownerOf(applicationNftId);
392
+
393
+ _checkPremiumBalanceAndAllowance(
394
+ tokenHandler.getToken(),
395
+ address(tokenHandler),
396
+ policyHolder,
397
+ 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
+ function _activate(
411
+ NftId policyNftId,
412
+ IPolicy.PolicyInfo memory policyInfo,
413
+ Timestamp activateAt
414
+ )
415
+ internal
416
+ virtual
417
+ view
418
+ returns (IPolicy.PolicyInfo memory)
419
+ {
420
+ // fail if policy has already been activated and activateAt is different
421
+ if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
422
+ revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
423
+ }
424
+
425
+ // ignore if policy has already been activated and activateAt is the same
426
+ if (policyInfo.activatedAt == activateAt) {
427
+ return policyInfo;
428
+ }
429
+
430
+ policyInfo.activatedAt = activateAt;
431
+ policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
432
+
433
+ return policyInfo;
434
+ }
435
+
436
+ /// @dev update counters by calling the involved services
437
+ function _processSale(
438
+ InstanceReader instanceReader,
439
+ InstanceStore instanceStore,
440
+ NftId productNftId,
441
+ NftId bundleNftId,
442
+ ReferralId referralId,
443
+ IPolicy.PremiumInfo memory premium
444
+ )
445
+ internal
446
+ virtual
447
+ {
448
+ (NftId distributionNftId, , , ) = _getDistributionNftAndWallets(
449
+ instanceReader,
450
+ productNftId);
451
+
452
+ // update product fees, distribution and pool fees
453
+ _componentService.increaseProductFees(
454
+ instanceStore,
455
+ productNftId,
456
+ premium.productFeeVarAmount + premium.productFeeFixAmount);
457
+
458
+ // update distribution fees and distributor commission and pool fees
459
+ if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
460
+ _distributionService.processSale(
461
+ distributionNftId,
462
+ referralId,
463
+ premium);
464
+ }
465
+
466
+ // update pool and bundle fees
467
+ _poolService.processSale(
468
+ bundleNftId,
469
+ premium);
470
+ }
471
+
472
+
473
+ /// @dev transfer the premium to the wallets the premium is distributed to
474
+ function _transferFunds(
475
+ InstanceReader instanceReader,
476
+ NftId policyNftId,
477
+ NftId productNftId,
478
+ IPolicy.PremiumInfo memory premium
479
+ )
480
+ internal
481
+ virtual
482
+ {
483
+ TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
484
+ address policyHolder = getRegistry().ownerOf(policyNftId);
485
+
486
+ (
487
+ ,
488
+ address distributionWallet,
489
+ address poolWallet,
490
+ address productWallet
491
+ ) = _getDistributionNftAndWallets(
492
+ instanceReader,
493
+ productNftId);
494
+
495
+ tokenHandler.collectTokensToThreeRecipients(
496
+ policyHolder,
497
+ productWallet,
498
+ premium.productFeeAmount,
499
+ distributionWallet,
500
+ premium.distributionFeeAndCommissionAmount,
501
+ poolWallet,
502
+ premium.poolPremiumAndFeeAmount);
503
+ }
504
+
505
+
506
+ /// @dev checks that policy has been collateralized and has been activated.
507
+ /// does not check if policy has been expired or closed.
508
+ function _policyHasBeenActivated(
509
+ StateId policyState,
510
+ IPolicy.PolicyInfo memory policyInfo
511
+ )
512
+ internal
513
+ view
514
+ returns (bool)
515
+ {
516
+ if (policyState != COLLATERALIZED()) { return false; }
517
+ if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
518
+ return true;
519
+ }
520
+
521
+
522
+ /// @dev checks the balance and allowance of the policy holder
523
+ function _checkPremiumBalanceAndAllowance(
524
+ IERC20Metadata token,
525
+ address tokenHandlerAddress,
526
+ address policyHolder,
527
+ Amount premiumAmount
528
+ )
529
+ internal
530
+ virtual
531
+ view
532
+ {
533
+ uint256 premium = premiumAmount.toInt();
534
+ uint256 balance = token.balanceOf(policyHolder);
535
+ uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
536
+
537
+ if (balance < premium) {
538
+ revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
539
+ }
540
+
541
+ if (allowance < premium) {
542
+ revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
543
+ }
544
+ }
545
+
546
+
547
+ function _policyHolderPolicyActivated(
548
+ NftId policyNftId,
549
+ Timestamp activateAt
550
+ )
551
+ internal
552
+ virtual
553
+ {
554
+ // immediately return if policy is not activated
555
+ if (activateAt.eqz()) {
556
+ return;
557
+ }
558
+
559
+ // get policy holder address
560
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
561
+
562
+ // execute callback if policy holder implements IPolicyHolder
563
+ if (address(policyHolder) != address(0)) {
564
+ policyHolder.policyActivated(policyNftId, activateAt);
565
+ }
566
+ }
567
+
568
+
569
+ function _policyHolderPolicyExpired(
570
+ NftId policyNftId,
571
+ Timestamp expiredAt
572
+ )
573
+ internal
574
+ virtual
575
+ {
576
+ // immediately return if policy is not activated
577
+ if (expiredAt.eqz()) {
578
+ return;
579
+ }
580
+
581
+ // get policy holder address
582
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
583
+
584
+ // execute callback if policy holder implements IPolicyHolder
585
+ if (address(policyHolder) != address(0)) {
586
+ policyHolder.policyExpired(policyNftId, expiredAt);
587
+ }
588
+ }
589
+
590
+
591
+ function _getPolicyHolder(NftId policyNftId)
592
+ internal
593
+ view
594
+ returns (IPolicyHolder policyHolder)
595
+ {
596
+ address policyHolderAddress = getRegistry().ownerOf(policyNftId);
597
+ policyHolder = IPolicyHolder(policyHolderAddress);
598
+
599
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
600
+ policyHolder = IPolicyHolder(address(0));
601
+ }
602
+ }
603
+
604
+
605
+ function _getTokenHandler(
606
+ InstanceReader instanceReader,
607
+ NftId productNftId
608
+ )
609
+ internal
610
+ virtual
611
+ view
612
+ returns (
613
+ TokenHandler tokenHandler
614
+ )
615
+ {
616
+ tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
617
+ }
618
+
619
+
620
+ function _getDistributionNftAndWallets(
621
+ InstanceReader instanceReader,
622
+ NftId productNftId
623
+ )
624
+ internal
625
+ virtual
626
+ view returns (
627
+ NftId distributionNftId,
628
+ address distributionWallet,
629
+ address poolWallet,
630
+ address productWallet
631
+ )
632
+ {
633
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
634
+ distributionNftId = productInfo.distributionNftId;
635
+ distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
636
+ poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
637
+ productWallet = instanceReader.getComponentInfo(productNftId).wallet;
638
+ }
639
+
640
+
641
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
642
+ IRegistry.ObjectInfo memory productInfo;
643
+ (, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
644
+ product = Product(productInfo.objectAddress);
645
+ }
646
+
647
+
648
+ function _getDomain() internal pure override returns(ObjectType) {
649
+ return POLICY();
650
+ }
651
+ }
@@ -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 registry,
16
+ bytes32 salt
17
+ )
18
+ {
19
+ PolicyService svc = new PolicyService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
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
+ }