@etherisc/gif-next 0.0.2-d48ae55-246 → 0.0.2-d5103a2-471

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 (713) hide show
  1. package/README.md +57 -88
  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/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +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/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +289 -333
  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/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1491 -0
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1946 -0
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1545 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1980 -0
  56. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  57. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  58. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +255 -1990
  60. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  61. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +291 -208
  62. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/Instance.sol/Instance.json +339 -2847
  64. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1623 -0
  66. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  68. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1014 -357
  70. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +340 -547
  72. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +265 -161
  74. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3607 -0
  76. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  78. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  79. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  80. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  82. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  84. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  86. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  88. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  90. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  91. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  92. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  94. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  95. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  96. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  97. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  98. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  100. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  101. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  102. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  103. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → oracle/IOracleComponent.sol/IOracleComponent.json} +316 -305
  104. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  105. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → oracle/IOracleService.sol/IOracleService.json} +311 -292
  106. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  107. package/artifacts/contracts/{components/Component.sol/Component.json → oracle/Oracle.sol/Oracle.json} +312 -338
  108. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +927 -0
  110. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +710 -0
  112. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  113. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +473 -563
  114. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  116. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  117. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1431 -0
  118. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  120. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  121. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +480 -347
  122. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  123. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +400 -357
  124. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  125. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1267 -0
  126. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  127. package/artifacts/contracts/pool/Pool.sol/Pool.json +1062 -0
  128. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1612 -0
  130. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +758 -0
  132. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  133. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +737 -0
  134. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +698 -0
  136. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  137. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +353 -545
  138. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  139. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  140. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  141. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1397 -0
  142. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +826 -0
  144. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  145. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +126 -247
  146. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  147. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +913 -0
  148. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  149. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +412 -300
  150. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  151. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  152. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  153. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +411 -274
  154. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  155. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +64 -213
  156. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  157. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1268 -0
  158. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +770 -0
  160. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  161. package/artifacts/contracts/product/PricingService.sol/PricingService.json +865 -0
  162. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  163. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +746 -0
  164. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  165. package/artifacts/contracts/product/Product.sol/Product.json +1056 -0
  166. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  167. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  168. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  169. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  170. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  171. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  172. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +413 -21
  174. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  175. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +185 -300
  176. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  178. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/Registry.sol/Registry.json +812 -37
  180. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  181. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1858 -0
  182. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  183. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +275 -520
  184. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  185. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +252 -152
  186. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  187. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  188. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  189. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  190. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  191. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  192. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +307 -177
  194. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  195. package/artifacts/contracts/shared/Component.sol/Component.json +685 -0
  196. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  197. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1573 -0
  198. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  199. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +794 -0
  200. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  201. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +149 -229
  202. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  203. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  204. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  205. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +217 -132
  206. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  207. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  208. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  209. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  210. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  211. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  212. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  214. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -40
  216. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  218. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -40
  220. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -34
  222. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IService.sol/IService.json +76 -164
  224. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  225. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  226. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  227. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  228. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  229. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +793 -0
  230. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  231. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  232. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  233. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  234. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  235. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  236. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +16 -126
  238. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  239. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -106
  240. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +22 -173
  242. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  243. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -49
  244. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  245. package/artifacts/contracts/shared/Service.sol/Service.json +78 -305
  246. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  247. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  248. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  249. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  250. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  251. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → staking/IStaking.sol/IStaking.json} +679 -674
  252. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  253. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  254. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  256. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  257. package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -0
  258. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  260. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +750 -0
  262. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  264. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1236 -0
  266. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  267. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  268. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  269. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  270. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  271. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  272. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  273. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  274. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  276. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  278. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  280. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  282. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  284. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  286. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  288. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  289. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  290. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  292. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  294. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  296. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  298. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  300. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  302. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  304. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  306. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  308. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  310. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  312. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  314. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  316. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  318. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  320. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  322. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  323. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  324. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  325. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  326. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  327. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  328. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  329. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  330. package/contracts/authorization/AccessAdmin.sol +592 -0
  331. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  332. package/contracts/authorization/Authorization.sol +221 -0
  333. package/contracts/authorization/IAccess.sol +48 -0
  334. package/contracts/authorization/IAccessAdmin.sol +135 -0
  335. package/contracts/authorization/IAuthorization.sol +54 -0
  336. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  337. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  338. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  339. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  340. package/contracts/distribution/BasicDistribution.sol +138 -0
  341. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  342. package/contracts/distribution/Distribution.sol +295 -0
  343. package/contracts/distribution/DistributionService.sol +336 -0
  344. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  345. package/contracts/distribution/IDistributionComponent.sol +52 -0
  346. package/contracts/distribution/IDistributionService.sol +101 -0
  347. package/contracts/examples/fire/DamageLevel.sol +59 -0
  348. package/contracts/examples/fire/FirePool.sol +75 -0
  349. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  350. package/contracts/examples/fire/FireProduct.sol +410 -0
  351. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  352. package/contracts/examples/fire/FireUSD.sol +26 -0
  353. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  354. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  355. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  356. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  357. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +33 -32
  358. package/contracts/instance/IInstance.sol +43 -66
  359. package/contracts/instance/IInstanceService.sol +57 -24
  360. package/contracts/instance/Instance.sol +160 -212
  361. package/contracts/instance/InstanceAdmin.sol +288 -0
  362. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  363. package/contracts/instance/InstanceReader.sol +264 -62
  364. package/contracts/instance/InstanceService.sol +337 -314
  365. package/contracts/instance/InstanceServiceManager.sol +14 -29
  366. package/contracts/instance/InstanceStore.sol +287 -0
  367. package/contracts/instance/base/BalanceStore.sol +123 -0
  368. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  369. package/contracts/instance/base/ObjectCounter.sol +21 -0
  370. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  371. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
  372. package/contracts/instance/module/IAccess.sol +19 -20
  373. package/contracts/instance/module/IBundle.sol +8 -8
  374. package/contracts/instance/module/IComponents.sol +48 -0
  375. package/contracts/instance/module/IDistribution.sol +6 -4
  376. package/contracts/instance/module/IPolicy.sol +58 -19
  377. package/contracts/instance/module/IRisk.sol +1 -1
  378. package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
  379. package/contracts/oracle/BasicOracle.sol +48 -0
  380. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  381. package/contracts/oracle/IOracle.sol +36 -0
  382. package/contracts/oracle/IOracleComponent.sol +33 -0
  383. package/contracts/oracle/IOracleService.sol +65 -0
  384. package/contracts/oracle/Oracle.sol +167 -0
  385. package/contracts/oracle/OracleService.sol +281 -0
  386. package/contracts/oracle/OracleServiceManager.sol +39 -0
  387. package/contracts/pool/BasicPool.sol +166 -0
  388. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  389. package/contracts/pool/BundleService.sol +461 -0
  390. package/contracts/pool/BundleServiceManager.sol +39 -0
  391. package/contracts/pool/IBundleService.sol +143 -0
  392. package/contracts/pool/IPoolComponent.sol +68 -0
  393. package/contracts/pool/IPoolService.sol +171 -0
  394. package/contracts/pool/Pool.sol +353 -0
  395. package/contracts/pool/PoolService.sol +563 -0
  396. package/contracts/pool/PoolServiceManager.sol +39 -0
  397. package/contracts/product/ApplicationService.sol +251 -0
  398. package/contracts/product/ApplicationServiceManager.sol +38 -0
  399. package/contracts/product/BasicProduct.sol +53 -0
  400. package/contracts/product/BasicProductAuthorization.sol +43 -0
  401. package/contracts/product/ClaimService.sol +581 -0
  402. package/contracts/product/ClaimServiceManager.sol +38 -0
  403. package/contracts/{instance/service → product}/IApplicationService.sol +18 -37
  404. package/contracts/product/IClaimService.sol +123 -0
  405. package/contracts/product/IPolicyService.sol +80 -0
  406. package/contracts/product/IPricingService.sol +39 -0
  407. package/contracts/product/IProductComponent.sol +53 -0
  408. package/contracts/product/IRiskService.sol +33 -0
  409. package/contracts/product/PolicyService.sol +686 -0
  410. package/contracts/product/PolicyServiceManager.sol +39 -0
  411. package/contracts/product/PricingService.sol +300 -0
  412. package/contracts/product/PricingServiceManager.sol +39 -0
  413. package/contracts/product/Product.sol +432 -0
  414. package/contracts/product/RiskService.sol +96 -0
  415. package/contracts/product/RiskServiceManager.sol +39 -0
  416. package/contracts/registry/ChainNft.sol +80 -32
  417. package/contracts/registry/IRegistry.sol +96 -25
  418. package/contracts/registry/IRegistryService.sol +38 -45
  419. package/contracts/registry/ITransferInterceptor.sol +1 -0
  420. package/contracts/registry/Registry.sol +444 -201
  421. package/contracts/registry/RegistryAdmin.sol +464 -0
  422. package/contracts/registry/RegistryService.sol +123 -141
  423. package/contracts/registry/RegistryServiceManager.sol +24 -33
  424. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  425. package/contracts/registry/ReleaseRegistry.sol +491 -0
  426. package/contracts/registry/ServiceAuthorizationV3.sol +198 -0
  427. package/contracts/registry/TokenRegistry.sol +262 -60
  428. package/contracts/shared/Component.sol +268 -0
  429. package/contracts/shared/ComponentService.sol +641 -0
  430. package/contracts/shared/ComponentServiceManager.sol +38 -0
  431. package/contracts/shared/ComponentVerifyingService.sol +116 -0
  432. package/contracts/shared/ContractLib.sol +38 -0
  433. package/contracts/shared/IComponent.sol +70 -0
  434. package/contracts/shared/IComponentService.sol +108 -0
  435. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  436. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  437. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  438. package/contracts/shared/INftOwnable.sol +6 -11
  439. package/contracts/shared/IPolicyHolder.sol +23 -14
  440. package/contracts/shared/IRegistryLinked.sol +0 -4
  441. package/contracts/shared/IService.sol +15 -6
  442. package/contracts/shared/InitializableCustom.sol +177 -0
  443. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +6 -5
  444. package/contracts/shared/InstanceLinkedComponent.sol +171 -0
  445. package/contracts/shared/KeyValueStore.sol +131 -0
  446. package/contracts/shared/Lifecycle.sol +77 -0
  447. package/contracts/shared/NftIdSet.sol +65 -0
  448. package/contracts/shared/NftOwnable.sol +17 -100
  449. package/contracts/shared/PolicyHolder.sol +22 -41
  450. package/contracts/shared/Registerable.sol +19 -25
  451. package/contracts/shared/RegistryLinked.sol +8 -28
  452. package/contracts/shared/Service.sol +59 -32
  453. package/contracts/shared/TokenHandler.sol +122 -10
  454. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  455. package/contracts/staking/IStaking.sol +168 -0
  456. package/contracts/staking/IStakingService.sol +160 -0
  457. package/contracts/staking/StakeManagerLib.sol +224 -0
  458. package/contracts/staking/Staking.sol +498 -0
  459. package/contracts/staking/StakingLifecycle.sol +23 -0
  460. package/contracts/staking/StakingManager.sol +52 -0
  461. package/contracts/staking/StakingReader.sol +183 -0
  462. package/contracts/staking/StakingService.sol +407 -0
  463. package/contracts/staking/StakingServiceManager.sol +44 -0
  464. package/contracts/staking/StakingStore.sol +605 -0
  465. package/contracts/staking/TargetManagerLib.sol +211 -0
  466. package/contracts/{types → type}/AddressSet.sol +1 -1
  467. package/contracts/type/Amount.sol +150 -0
  468. package/contracts/{types → type}/Blocknumber.sol +27 -3
  469. package/contracts/type/ClaimId.sol +80 -0
  470. package/contracts/{types → type}/Fee.sol +33 -23
  471. package/contracts/{types → type}/NftId.sol +22 -15
  472. package/contracts/{types → type}/NftIdSet.sol +2 -2
  473. package/contracts/type/ObjectType.sol +275 -0
  474. package/contracts/type/PayoutId.sol +82 -0
  475. package/contracts/{types → type}/Referral.sol +6 -1
  476. package/contracts/type/RequestId.sol +75 -0
  477. package/contracts/{types → type}/RiskId.sol +16 -2
  478. package/contracts/type/RoleId.sol +174 -0
  479. package/contracts/type/Seconds.sol +101 -0
  480. package/contracts/type/Selector.sol +102 -0
  481. package/contracts/{types → type}/StateId.sol +35 -4
  482. package/contracts/type/String.sol +53 -0
  483. package/contracts/{types → type}/Timestamp.sol +34 -15
  484. package/contracts/{types → type}/UFixed.sol +39 -9
  485. package/contracts/{types → type}/Version.sol +5 -2
  486. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  487. package/contracts/upgradeability/ProxyManager.sol +231 -0
  488. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  489. package/contracts/upgradeability/Versionable.sol +59 -0
  490. package/package.json +8 -5
  491. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  492. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  493. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  494. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  495. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  496. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  497. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  498. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  501. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  503. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  505. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  507. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  509. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  510. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  511. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  512. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  513. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  514. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  515. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  516. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  517. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  518. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  519. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  520. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  521. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  522. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  523. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  524. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  525. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  526. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  527. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  528. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  529. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  530. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  531. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  532. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  533. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  534. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  535. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  536. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  537. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  538. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  539. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  540. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  541. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  542. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  543. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  544. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  545. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  546. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  547. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  548. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  549. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  550. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  551. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  552. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  554. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  555. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1117
  556. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  557. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1318
  558. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  559. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -586
  560. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  561. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1200
  562. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  563. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -614
  564. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  565. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  566. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  568. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  570. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1378
  572. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  573. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -642
  574. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  575. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -957
  576. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -574
  578. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1007
  580. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  581. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -574
  582. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  583. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  584. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  585. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  586. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  587. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  588. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  589. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  590. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  591. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  592. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  593. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -499
  594. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  595. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  596. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  597. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  598. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  599. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  600. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  601. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -446
  602. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  603. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  604. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  605. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -759
  606. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  607. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  608. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  609. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  610. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  611. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  612. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  613. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  614. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  615. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  616. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  618. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  620. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  622. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  623. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  624. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  625. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  626. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  628. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  629. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  630. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  632. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  634. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  636. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  638. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  640. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  641. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  642. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  643. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  644. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  645. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  646. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  647. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  649. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  650. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  651. package/contracts/components/Component.sol +0 -236
  652. package/contracts/components/Distribution.sol +0 -316
  653. package/contracts/components/IComponent.sol +0 -50
  654. package/contracts/components/IDistributionComponent.sol +0 -100
  655. package/contracts/components/IPoolComponent.sol +0 -87
  656. package/contracts/components/IProductComponent.sol +0 -39
  657. package/contracts/components/Pool.sol +0 -254
  658. package/contracts/components/Product.sol +0 -278
  659. package/contracts/experiment/cloning/Cloner.sol +0 -47
  660. package/contracts/experiment/errors/Require.sol +0 -38
  661. package/contracts/experiment/errors/Revert.sol +0 -44
  662. package/contracts/experiment/inheritance/A.sol +0 -53
  663. package/contracts/experiment/inheritance/B.sol +0 -28
  664. package/contracts/experiment/inheritance/C.sol +0 -34
  665. package/contracts/experiment/inheritance/IA.sol +0 -13
  666. package/contracts/experiment/inheritance/IB.sol +0 -10
  667. package/contracts/experiment/inheritance/IC.sol +0 -12
  668. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  669. package/contracts/experiment/statemachine/ISM.sol +0 -25
  670. package/contracts/experiment/statemachine/SM.sol +0 -57
  671. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  672. package/contracts/experiment/types/TypeA.sol +0 -47
  673. package/contracts/experiment/types/TypeB.sol +0 -29
  674. package/contracts/instance/InstanceAccessManager.sol +0 -297
  675. package/contracts/instance/base/ComponentService.sol +0 -134
  676. package/contracts/instance/base/KeyValueStore.sol +0 -172
  677. package/contracts/instance/base/Lifecycle.sol +0 -100
  678. package/contracts/instance/module/ISetup.sol +0 -47
  679. package/contracts/instance/module/ITreasury.sol +0 -23
  680. package/contracts/instance/service/ApplicationService.sol +0 -268
  681. package/contracts/instance/service/BundleService.sol +0 -298
  682. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  683. package/contracts/instance/service/DistributionService.sol +0 -291
  684. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  685. package/contracts/instance/service/IBundleService.sol +0 -54
  686. package/contracts/instance/service/IDistributionService.sol +0 -65
  687. package/contracts/instance/service/IPolicyService.sol +0 -88
  688. package/contracts/instance/service/IPoolService.sol +0 -20
  689. package/contracts/instance/service/IProductService.sol +0 -40
  690. package/contracts/instance/service/PolicyService.sol +0 -524
  691. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  692. package/contracts/instance/service/PoolService.sol +0 -109
  693. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  694. package/contracts/instance/service/ProductService.sol +0 -233
  695. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  696. package/contracts/registry/RegistryAccessManager.sol +0 -216
  697. package/contracts/registry/ReleaseManager.sol +0 -331
  698. package/contracts/shared/ContractDeployerLib.sol +0 -72
  699. package/contracts/shared/ProxyManager.sol +0 -95
  700. package/contracts/shared/Versionable.sol +0 -148
  701. package/contracts/test/TestFee.sol +0 -25
  702. package/contracts/test/TestRegisterable.sol +0 -18
  703. package/contracts/test/TestRoleId.sol +0 -14
  704. package/contracts/test/TestService.sol +0 -25
  705. package/contracts/test/TestVersion.sol +0 -44
  706. package/contracts/test/TestVersionable.sol +0 -17
  707. package/contracts/test/Usdc.sol +0 -26
  708. package/contracts/types/ChainId.sol +0 -38
  709. package/contracts/types/NumberId.sol +0 -52
  710. package/contracts/types/ObjectType.sol +0 -156
  711. package/contracts/types/RoleId.sol +0 -90
  712. /package/contracts/{types → type}/DistributorType.sol +0 -0
  713. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,563 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IBundleService} from "./IBundleService.sol";
6
+ import {IComponents} from "../instance/module/IComponents.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IInstance} from "../instance/IInstance.sol";
9
+ import {IInstanceService} from "../instance/IInstanceService.sol";
10
+ import {IPolicy} from "../instance/module/IPolicy.sol";
11
+ import {IProductComponent} from "../product/IProductComponent.sol";
12
+ import {IPoolService} from "./IPoolService.sol";
13
+ import {IRegistry} from "../registry/IRegistry.sol";
14
+ import {IRegistryService} from "../registry/IRegistryService.sol";
15
+ import {IStaking} from "../staking/IStaking.sol";
16
+
17
+ import {Amount, AmountLib} from "../type/Amount.sol";
18
+ import {ClaimId} from "../type/ClaimId.sol";
19
+ import {Fee, FeeLib} from "../type/Fee.sol";
20
+ import {NftId} from "../type/NftId.sol";
21
+ import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
22
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
23
+ import {Fee, FeeLib} from "../type/Fee.sol";
24
+ import {KEEP_STATE} from "../type/StateId.sol";
25
+ import {Seconds} from "../type/Seconds.sol";
26
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
27
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
28
+ import {InstanceReader} from "../instance/InstanceReader.sol";
29
+ import {InstanceStore} from "../instance/InstanceStore.sol";
30
+
31
+ string constant POOL_SERVICE_NAME = "PoolService";
32
+
33
+ contract PoolService is
34
+ ComponentVerifyingService,
35
+ IPoolService
36
+ {
37
+ IBundleService internal _bundleService;
38
+ IComponentService internal _componentService;
39
+ IInstanceService private _instanceService;
40
+ IRegistryService private _registryService;
41
+
42
+ IStaking private _staking;
43
+
44
+ function _initialize(
45
+ address owner,
46
+ bytes memory data
47
+ )
48
+ internal
49
+ virtual override
50
+ initializer()
51
+ {
52
+ (
53
+ address registryAddress,
54
+ address authority
55
+ ) = abi.decode(data, (address, address));
56
+
57
+ _initializeService(registryAddress, authority, owner);
58
+
59
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
60
+ _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
61
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
62
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
63
+
64
+ _staking = IStaking(getRegistry().getStakingAddress());
65
+
66
+ _registerInterface(type(IPoolService).interfaceId);
67
+ }
68
+
69
+
70
+ /// @inheritdoc IPoolService
71
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
72
+ external
73
+ virtual
74
+ {
75
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
76
+ InstanceReader instanceReader = instance.getInstanceReader();
77
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
78
+
79
+ Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
80
+ poolInfo.maxBalanceAmount = maxBalanceAmount;
81
+ instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
82
+
83
+ emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
84
+ }
85
+
86
+
87
+ function setBundleOwnerRole(RoleId bundleOwnerRole)
88
+ external
89
+ virtual
90
+ {
91
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
92
+ InstanceReader instanceReader = instance.getInstanceReader();
93
+
94
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
95
+ IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
96
+
97
+ // bundle owner role may only be set once per pool
98
+ if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
99
+ revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
100
+ }
101
+
102
+ poolInfo.bundleOwnerRole = bundleOwnerRole;
103
+ instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
104
+
105
+ emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
106
+ }
107
+
108
+
109
+ /// @inheritdoc IPoolService
110
+ function createBundle(
111
+ address bundleOwner, // initial bundle owner
112
+ Fee memory fee, // fees deducted from premium that go to bundle owner
113
+ Seconds lifetime, // initial duration for which new policies are covered
114
+ bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
115
+ )
116
+ external
117
+ virtual
118
+ returns(NftId bundleNftId)
119
+ {
120
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
121
+
122
+ // create the empty bundle
123
+ bundleNftId = _bundleService.create(
124
+ instance,
125
+ poolNftId,
126
+ bundleOwner,
127
+ fee,
128
+ AmountLib.zero(),
129
+ lifetime,
130
+ filter);
131
+
132
+ emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
133
+ }
134
+
135
+
136
+ function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
137
+ internal
138
+ virtual
139
+ view
140
+ returns (Fee memory stakingFee)
141
+ {
142
+ NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
143
+ return instanceReader.getProductInfo(productNftId).stakingFee;
144
+ }
145
+
146
+
147
+ function closeBundle(NftId bundleNftId)
148
+ external
149
+ virtual
150
+ {
151
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
152
+
153
+ // TODO get performance fee for pool (#477)
154
+
155
+ // releasing collateral in bundle
156
+ (Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
157
+
158
+ _componentService.decreasePoolBalance(
159
+ instance.getInstanceStore(),
160
+ poolNftId,
161
+ unstakedAmount + feeAmount,
162
+ AmountLib.zero());
163
+
164
+ emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
165
+
166
+ if ((unstakedAmount + feeAmount).gtz()){
167
+ IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
168
+ poolComponentInfo.tokenHandler.distributeTokens(
169
+ poolComponentInfo.wallet,
170
+ getRegistry().ownerOf(bundleNftId),
171
+ unstakedAmount + feeAmount);
172
+ }
173
+ }
174
+
175
+
176
+ /// @inheritdoc IPoolService
177
+ function processFundedClaim(
178
+ NftId policyNftId,
179
+ ClaimId claimId,
180
+ Amount availableAmount
181
+ )
182
+ external
183
+ virtual
184
+ {
185
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
186
+ InstanceReader instanceReader = instance.getInstanceReader();
187
+ NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
188
+
189
+ // check policy matches with calling pool
190
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
191
+ if(policyInfo.productNftId != productNftId) {
192
+ revert ErrorPoolServicePolicyPoolMismatch(
193
+ policyNftId,
194
+ policyInfo.productNftId,
195
+ productNftId);
196
+ }
197
+
198
+ emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
199
+
200
+ // callback to product component if applicable
201
+ if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
202
+ address productAddress = getRegistry().getObjectAddress(productNftId);
203
+ IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
204
+ }
205
+ }
206
+
207
+
208
+ /// @inheritdoc IPoolService
209
+ function stake(NftId bundleNftId, Amount amount)
210
+ external
211
+ virtual
212
+ // TODO: restricted() (once #462 is done)
213
+ returns(Amount netAmount)
214
+ {
215
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
216
+ InstanceReader instanceReader = instance.getInstanceReader();
217
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
218
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
219
+
220
+ if (bundleInfo.poolNftId != poolNftId) {
221
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
222
+ }
223
+
224
+ {
225
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
226
+ if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
227
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
228
+ }
229
+ }
230
+
231
+
232
+ // calculate fees
233
+ Amount feeAmount;
234
+ (
235
+ feeAmount,
236
+ netAmount
237
+ ) = FeeLib.calculateFee(
238
+ _getStakingFee(instanceReader, poolNftId),
239
+ amount);
240
+
241
+ // do all the bookkeeping
242
+ _componentService.increasePoolBalance(
243
+ instance.getInstanceStore(),
244
+ poolNftId,
245
+ netAmount,
246
+ feeAmount);
247
+
248
+ _bundleService.stake(instance, bundleNftId, netAmount);
249
+
250
+ // collect tokens from bundle owner
251
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
252
+ emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
253
+
254
+ // TODO only collect staking token when pool is not externally managed
255
+ _collectStakingAmount(
256
+ instanceReader,
257
+ poolNftId,
258
+ bundleOwner,
259
+ amount);
260
+ }
261
+
262
+ /// @inheritdoc IPoolService
263
+ function unstake(NftId bundleNftId, Amount amount)
264
+ external
265
+ virtual
266
+ // TODO: restricted() (once #462 is done)
267
+ returns(Amount netAmount)
268
+ {
269
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
270
+ InstanceReader instanceReader = instance.getInstanceReader();
271
+ InstanceStore instanceStore = instance.getInstanceStore();
272
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
273
+
274
+ if (bundleInfo.poolNftId != poolNftId) {
275
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
276
+ }
277
+
278
+ // call bundle service for bookkeeping and additional checks
279
+ Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
280
+
281
+ // Important: from now on work only with unstakedAmount as it is the only reliable amount.
282
+ // if amount was max, this was set to the available amount
283
+
284
+ // TODO: handle performance fees (issue #477)
285
+
286
+ // update pool bookkeeping - performance fees stay in the pool, but as fees
287
+ _componentService.decreasePoolBalance(
288
+ instanceStore,
289
+ poolNftId,
290
+ unstakedAmount,
291
+ AmountLib.zero());
292
+
293
+ IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
294
+ address poolWallet = poolComponentInfo.wallet;
295
+ // transfer amount to bundle owner
296
+ address owner = getRegistry().ownerOf(bundleNftId);
297
+ emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
298
+ poolComponentInfo.tokenHandler.distributeTokens(
299
+ poolWallet,
300
+ owner,
301
+ unstakedAmount);
302
+ return unstakedAmount;
303
+ }
304
+
305
+
306
+ function fundPoolWallet(NftId poolNftId, Amount amount)
307
+ external
308
+ virtual
309
+ restricted()
310
+ {
311
+ // TODO check that poolNftId is externally managed
312
+ // TODO implement
313
+ }
314
+
315
+
316
+ function defundPoolWallet(NftId poolNftId, Amount amount)
317
+ external
318
+ virtual
319
+ restricted()
320
+ {
321
+ // TODO check that poolNftId is externally managed
322
+ // TODO implement
323
+ }
324
+
325
+ function processSale(
326
+ NftId bundleNftId,
327
+ IPolicy.PremiumInfo memory premium
328
+ )
329
+ external
330
+ virtual
331
+ restricted()
332
+ {
333
+ IRegistry registry = getRegistry();
334
+ IRegistry.ObjectInfo memory bundleObjectInfo = registry.getObjectInfo(bundleNftId);
335
+ IRegistry.ObjectInfo memory poolObjectInfo = registry.getObjectInfo(bundleObjectInfo.parentNftId);
336
+ IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
337
+ IInstance instance = IInstance(instanceObjectInfo.objectAddress);
338
+
339
+ Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
340
+ Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
341
+ Amount bundleNetAmount = premium.netPremiumAmount;
342
+
343
+ InstanceStore instanceStore = instance.getInstanceStore();
344
+ _componentService.increasePoolBalance(
345
+ instanceStore,
346
+ poolObjectInfo.nftId,
347
+ bundleNetAmount + bundleFeeAmount,
348
+ poolFeeAmount);
349
+
350
+ _componentService.increaseBundleBalance(
351
+ instanceStore,
352
+ bundleObjectInfo.nftId,
353
+ bundleNetAmount,
354
+ bundleFeeAmount);
355
+ }
356
+
357
+
358
+ function lockCollateral(
359
+ IInstance instance,
360
+ address token,
361
+ NftId productNftId,
362
+ NftId applicationNftId,
363
+ NftId bundleNftId,
364
+ Amount sumInsuredAmount // premium amount after product and distribution fees
365
+ )
366
+ external
367
+ virtual
368
+ restricted()
369
+ returns (
370
+ Amount totalCollateralAmount,
371
+ Amount localCollateralAmount
372
+ )
373
+ {
374
+ (
375
+ totalCollateralAmount,
376
+ localCollateralAmount
377
+ ) = calculateRequiredCollateral(
378
+ instance.getInstanceReader(),
379
+ productNftId,
380
+ sumInsuredAmount);
381
+
382
+ // lock collateral amount from involved bundle
383
+ _bundleService.lockCollateral(
384
+ instance,
385
+ applicationNftId,
386
+ bundleNftId,
387
+ localCollateralAmount);
388
+
389
+ // update value locked with staking service
390
+ _staking.increaseTotalValueLocked(
391
+ instance.getNftId(),
392
+ token,
393
+ totalCollateralAmount);
394
+
395
+ // hierarhical riskpool setup
396
+ // TODO loop in with pool component to guarantee availability of external capital
397
+ if(totalCollateralAmount > localCollateralAmount) {
398
+
399
+ }
400
+ }
401
+
402
+ function processPayout(
403
+ IInstance instance,
404
+ address token,
405
+ NftId policyNftId,
406
+ IPolicy.PolicyInfo memory policyInfo,
407
+ Amount payoutAmount
408
+ )
409
+ external
410
+ virtual
411
+ restricted()
412
+ {
413
+ NftId bundleNftId = policyInfo.bundleNftId;
414
+ NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
415
+ InstanceStore instanceStore = instance.getInstanceStore();
416
+
417
+ _componentService.decreasePoolBalance(
418
+ instanceStore,
419
+ poolNftId,
420
+ payoutAmount,
421
+ AmountLib.zero());
422
+
423
+ _componentService.decreaseBundleBalance(
424
+ instanceStore,
425
+ bundleNftId,
426
+ payoutAmount,
427
+ AmountLib.zero());
428
+
429
+ _bundleService.releaseCollateral(
430
+ instance,
431
+ policyNftId,
432
+ policyInfo.bundleNftId,
433
+ payoutAmount);
434
+
435
+ // update value locked with staking service
436
+ _staking.decreaseTotalValueLocked(
437
+ instance.getNftId(),
438
+ token,
439
+ payoutAmount);
440
+ }
441
+
442
+
443
+ /// @dev releases the remaining collateral linked to the specified policy
444
+ /// may only be called by the policy service for unlocked pool components
445
+ function releaseCollateral(
446
+ IInstance instance,
447
+ address token,
448
+ NftId policyNftId,
449
+ IPolicy.PolicyInfo memory policyInfo
450
+ )
451
+ external
452
+ virtual
453
+ restricted()
454
+ {
455
+ Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
456
+
457
+ _bundleService.releaseCollateral(
458
+ instance,
459
+ policyNftId,
460
+ policyInfo.bundleNftId,
461
+ remainingCollateralAmount);
462
+
463
+ _bundleService.unlinkPolicy(
464
+ instance,
465
+ policyNftId);
466
+
467
+ // update value locked with staking service
468
+ _staking.decreaseTotalValueLocked(
469
+ instance.getNftId(),
470
+ token,
471
+ remainingCollateralAmount);
472
+ }
473
+
474
+
475
+ function calculateRequiredCollateral(
476
+ InstanceReader instanceReader,
477
+ NftId productNftId,
478
+ Amount sumInsuredAmount
479
+ )
480
+ public
481
+ view
482
+ returns(
483
+ Amount totalCollateralAmount,
484
+ Amount localCollateralAmount
485
+ )
486
+ {
487
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
488
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
489
+
490
+ (
491
+ totalCollateralAmount,
492
+ localCollateralAmount
493
+ ) = calculateRequiredCollateral(
494
+ poolInfo.collateralizationLevel,
495
+ poolInfo.retentionLevel,
496
+ sumInsuredAmount);
497
+ }
498
+
499
+
500
+ function calculateRequiredCollateral(
501
+ UFixed collateralizationLevel,
502
+ UFixed retentionLevel,
503
+ Amount sumInsuredAmount
504
+ )
505
+ public
506
+ pure
507
+ returns(
508
+ Amount totalCollateralAmount,
509
+ Amount localCollateralAmount
510
+ )
511
+ {
512
+ // collateralization is applied to sum insured
513
+ UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
514
+ totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
515
+
516
+ // retention level defines how much capital is required locally
517
+ localCollateralAmount = AmountLib.toAmount(
518
+ (retentionLevel * totalUFixed).toInt());
519
+ }
520
+
521
+
522
+ function _processStakingFees(
523
+ Fee memory stakingFee,
524
+ Amount stakingAmount
525
+ )
526
+ internal
527
+ returns (Amount stakingNetAmount)
528
+ {
529
+ stakingNetAmount = stakingAmount;
530
+
531
+ // check if any staking fees apply
532
+ if (FeeLib.gtz(stakingFee)) {
533
+ (Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
534
+ stakingNetAmount = netAmount;
535
+
536
+ // TODO update fee balance for pool
537
+ }
538
+ }
539
+
540
+
541
+ /// @dev transfers the specified amount from the bundle owner to the pool's wallet
542
+ function _collectStakingAmount(
543
+ InstanceReader instanceReader,
544
+ NftId poolNftId,
545
+ address bundleOwner,
546
+ Amount amount
547
+ )
548
+ internal
549
+ {
550
+
551
+ // collecting investor token
552
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
553
+ address poolWallet = componentInfo.wallet;
554
+ componentInfo.tokenHandler.collectTokens(
555
+ bundleOwner,
556
+ poolWallet,
557
+ amount);
558
+ }
559
+
560
+ function _getDomain() internal pure override returns(ObjectType) {
561
+ return POOL();
562
+ }
563
+ }
@@ -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 {PoolService} from "./PoolService.sol";
7
+
8
+ contract PoolServiceManager is ProxyManager {
9
+
10
+ PoolService private _poolService;
11
+
12
+ /// @dev initializes proxy manager with pool service implementation
13
+ constructor(
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
18
+ {
19
+ PoolService poolSrv = new PoolService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(poolSrv),
24
+ data,
25
+ salt);
26
+
27
+ _poolService = PoolService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getPoolService()
32
+ external
33
+ view
34
+ returns (PoolService poolService)
35
+ {
36
+ return _poolService;
37
+ }
38
+
39
+ }