@etherisc/gif-next 0.0.2-9ed3c41-176 → 0.0.2-9fbe02c-508

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 (472) hide show
  1. package/README.md +19 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +206 -309
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +134 -277
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +284 -223
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +116 -104
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +121 -92
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +149 -31
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  53. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -139
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +459 -136
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +330 -243
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  74. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  88. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +164 -280
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  93. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +96 -80
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +106 -262
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +152 -330
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +487 -156
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +169 -89
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +258 -1
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +131 -130
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  117. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
  118. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  119. package/artifacts/contracts/pool/Pool.sol/Pool.json +142 -313
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -87
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +155 -281
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  131. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +323 -118
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  143. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  145. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +143 -97
  146. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  147. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +444 -325
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  151. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingService.sol/PricingService.json +202 -307
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
  156. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  157. package/artifacts/contracts/product/Product.sol/Product.json +155 -281
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  159. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +286 -34
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  167. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  168. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  169. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  170. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/Registry.sol/Registry.json +492 -95
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  177. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  186. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  187. package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +523 -242
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -106
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +474 -19
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +85 -80
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  212. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  215. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  216. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +98 -265
  219. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  220. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  221. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  224. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  233. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  234. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  236. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  237. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  238. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  240. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  242. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  245. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  246. package/artifacts/contracts/staking/Staking.sol/Staking.json +174 -291
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  254. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  256. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  258. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +174 -128
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  261. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  277. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  292. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  296. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  299. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  301. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
  303. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  306. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  307. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  308. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  309. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  310. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  311. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  312. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  313. package/contracts/authorization/AccessAdmin.sol +64 -59
  314. package/contracts/authorization/Authorization.sol +111 -40
  315. package/contracts/authorization/IAccess.sol +1 -0
  316. package/contracts/authorization/IAccessAdmin.sol +4 -3
  317. package/contracts/authorization/IAuthorization.sol +13 -7
  318. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  319. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  320. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  321. package/contracts/distribution/BasicDistribution.sol +6 -16
  322. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  323. package/contracts/distribution/Distribution.sol +28 -26
  324. package/contracts/distribution/DistributionService.sol +128 -75
  325. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  326. package/contracts/distribution/IDistributionComponent.sol +9 -5
  327. package/contracts/distribution/IDistributionService.sol +18 -2
  328. package/contracts/examples/fire/DamageLevel.sol +59 -0
  329. package/contracts/examples/fire/FirePool.sol +73 -0
  330. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  331. package/contracts/examples/fire/FireProduct.sol +415 -0
  332. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  333. package/contracts/examples/fire/FireUSD.sol +26 -0
  334. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  335. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  336. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  337. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  338. package/contracts/instance/IInstance.sol +10 -30
  339. package/contracts/instance/IInstanceService.sol +0 -20
  340. package/contracts/instance/Instance.sol +29 -51
  341. package/contracts/instance/InstanceAdmin.sol +42 -31
  342. package/contracts/instance/InstanceAuthorizationV3.sol +13 -21
  343. package/contracts/instance/InstanceReader.sol +115 -25
  344. package/contracts/instance/InstanceService.sol +65 -97
  345. package/contracts/instance/InstanceServiceManager.sol +8 -13
  346. package/contracts/instance/InstanceStore.sol +12 -1
  347. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  348. package/contracts/instance/module/IBundle.sol +1 -1
  349. package/contracts/instance/module/IComponents.sol +10 -11
  350. package/contracts/instance/module/IDistribution.sol +0 -1
  351. package/contracts/instance/module/IPolicy.sol +24 -24
  352. package/contracts/mock/Dip.sol +1 -1
  353. package/contracts/oracle/BasicOracle.sol +0 -1
  354. package/contracts/oracle/IOracleComponent.sol +2 -1
  355. package/contracts/oracle/IOracleService.sol +2 -1
  356. package/contracts/oracle/Oracle.sol +21 -22
  357. package/contracts/oracle/OracleService.sol +47 -34
  358. package/contracts/oracle/OracleServiceManager.sol +8 -11
  359. package/contracts/pool/BasicPool.sol +21 -31
  360. package/contracts/pool/BasicPoolAuthorization.sol +11 -3
  361. package/contracts/pool/BundleService.sol +259 -62
  362. package/contracts/pool/BundleServiceManager.sol +8 -11
  363. package/contracts/pool/IBundleService.sol +42 -5
  364. package/contracts/pool/IPoolComponent.sol +24 -8
  365. package/contracts/pool/IPoolService.sol +56 -39
  366. package/contracts/pool/Pool.sol +73 -49
  367. package/contracts/pool/PoolService.sol +256 -163
  368. package/contracts/pool/PoolServiceManager.sol +6 -9
  369. package/contracts/product/ApplicationService.sol +70 -65
  370. package/contracts/product/ApplicationServiceManager.sol +6 -6
  371. package/contracts/product/BasicProduct.sol +9 -38
  372. package/contracts/product/BasicProductAuthorization.sol +2 -0
  373. package/contracts/product/ClaimService.sol +316 -146
  374. package/contracts/product/ClaimServiceManager.sol +6 -6
  375. package/contracts/product/IApplicationService.sol +1 -0
  376. package/contracts/product/IClaimService.sol +31 -7
  377. package/contracts/product/IPolicyService.sol +34 -32
  378. package/contracts/product/IPricingService.sol +10 -10
  379. package/contracts/product/IProductComponent.sol +24 -4
  380. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  381. package/contracts/product/PolicyService.sol +419 -203
  382. package/contracts/product/PolicyServiceManager.sol +6 -9
  383. package/contracts/product/PricingService.sol +54 -54
  384. package/contracts/product/PricingServiceManager.sol +5 -8
  385. package/contracts/product/Product.sol +134 -71
  386. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  387. package/contracts/product/RiskServiceManager.sol +39 -0
  388. package/contracts/registry/ChainNft.sol +68 -38
  389. package/contracts/registry/IRegistry.sol +55 -18
  390. package/contracts/registry/IRegistryService.sol +5 -12
  391. package/contracts/registry/ITransferInterceptor.sol +1 -2
  392. package/contracts/registry/Registry.sol +342 -201
  393. package/contracts/registry/RegistryAdmin.sol +134 -51
  394. package/contracts/registry/RegistryService.sol +39 -64
  395. package/contracts/registry/RegistryServiceManager.sol +4 -4
  396. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  397. package/contracts/registry/ReleaseRegistry.sol +204 -190
  398. package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
  399. package/contracts/shared/Component.sol +47 -63
  400. package/contracts/shared/ComponentService.sol +314 -150
  401. package/contracts/shared/ComponentServiceManager.sol +10 -7
  402. package/contracts/shared/ComponentVerifyingService.sol +23 -14
  403. package/contracts/shared/ContractLib.sol +38 -0
  404. package/contracts/shared/IComponent.sol +10 -6
  405. package/contracts/shared/IComponentService.sol +38 -20
  406. package/contracts/shared/IInstanceLinkedComponent.sol +8 -17
  407. package/contracts/shared/ILifecycle.sol +3 -1
  408. package/contracts/shared/INftOwnable.sol +2 -0
  409. package/contracts/shared/IPolicyHolder.sol +12 -22
  410. package/contracts/shared/IRegisterable.sol +11 -0
  411. package/contracts/shared/IService.sol +1 -1
  412. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  413. package/contracts/shared/InstanceLinkedComponent.sol +85 -23
  414. package/contracts/shared/KeyValueStore.sol +1 -1
  415. package/contracts/shared/Lifecycle.sol +15 -4
  416. package/contracts/shared/NftOwnable.sol +29 -9
  417. package/contracts/shared/PolicyHolder.sol +17 -57
  418. package/contracts/shared/Registerable.sol +19 -9
  419. package/contracts/shared/RegistryLinked.sol +3 -2
  420. package/contracts/shared/Service.sol +23 -22
  421. package/contracts/shared/TokenHandler.sol +100 -19
  422. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  423. package/contracts/staking/IStaking.sol +3 -2
  424. package/contracts/staking/IStakingService.sol +0 -3
  425. package/contracts/staking/StakeManagerLib.sol +18 -25
  426. package/contracts/staking/Staking.sol +28 -42
  427. package/contracts/staking/StakingManager.sol +10 -11
  428. package/contracts/staking/StakingReader.sol +17 -13
  429. package/contracts/staking/StakingService.sol +25 -29
  430. package/contracts/staking/StakingServiceManager.sol +4 -4
  431. package/contracts/staking/StakingStore.sol +5 -15
  432. package/contracts/staking/TargetManagerLib.sol +7 -3
  433. package/contracts/type/Amount.sol +27 -5
  434. package/contracts/type/Blocknumber.sol +7 -1
  435. package/contracts/type/ClaimId.sol +6 -1
  436. package/contracts/type/NftId.sol +1 -0
  437. package/contracts/type/ObjectType.sol +16 -11
  438. package/contracts/type/PayoutId.sol +10 -10
  439. package/contracts/type/Referral.sol +1 -0
  440. package/contracts/type/RiskId.sol +15 -1
  441. package/contracts/type/RoleId.sol +0 -12
  442. package/contracts/type/Seconds.sol +21 -1
  443. package/contracts/type/StateId.sol +15 -1
  444. package/contracts/type/Timestamp.sol +11 -1
  445. package/contracts/type/UFixed.sol +33 -10
  446. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  447. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  448. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  449. package/package.json +2 -1
  450. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  451. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  452. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  453. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  454. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  455. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  456. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  457. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  458. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  459. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  460. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  461. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  462. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  463. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  464. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  465. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  466. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  467. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  468. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  469. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  470. package/contracts/product/ProductServiceManager.sol +0 -42
  471. package/contracts/shared/InitializableCustom.sol +0 -177
  472. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,45 +1,29 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Pool} from "./Pool.sol";
5
- import {IRegistry} from "../registry/IRegistry.sol";
6
- import {IInstance} from "../instance/IInstance.sol";
7
4
  import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IBundleService} from "./IBundleService.sol";
8
6
  import {IComponents} from "../instance/module/IComponents.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IInstance} from "../instance/IInstance.sol";
9
9
  import {IPolicy} from "../instance/module/IPolicy.sol";
10
-
11
- import {IVersionable} from "../shared/IVersionable.sol";
12
- import {Versionable} from "../shared/Versionable.sol";
13
- import {INftOwnable} from "../shared/INftOwnable.sol";
10
+ import {IProductComponent} from "../product/IProductComponent.sol";
11
+ import {IPoolService} from "./IPoolService.sol";
12
+ import {IRegistry} from "../registry/IRegistry.sol";
13
+ import {IStaking} from "../staking/IStaking.sol";
14
14
 
15
15
  import {Amount, AmountLib} from "../type/Amount.sol";
16
+ import {ClaimId} from "../type/ClaimId.sol";
16
17
  import {Fee, FeeLib} from "../type/Fee.sol";
17
- import {NftId, NftIdLib} from "../type/NftId.sol";
18
- import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
19
- import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
18
+ import {NftId} from "../type/NftId.sol";
19
+ import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
20
20
  import {Fee, FeeLib} from "../type/Fee.sol";
21
- import {Version, VersionLib} from "../type/Version.sol";
22
- import {KEEP_STATE, StateId} from "../type/StateId.sol";
21
+ import {KEEP_STATE} from "../type/StateId.sol";
23
22
  import {Seconds} from "../type/Seconds.sol";
24
- import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
25
- import {TokenHandler} from "../shared/TokenHandler.sol";
26
23
  import {UFixed} from "../type/UFixed.sol";
27
- import {Version, VersionLib} from "../type/Version.sol";
28
-
29
- import {IService} from "../shared/IService.sol";
30
- import {Service} from "../shared/Service.sol";
31
24
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
32
- import {IBundleService} from "./IBundleService.sol";
33
- import {IComponentService} from "../shared/IComponentService.sol";
34
- import {IInstanceService} from "../instance/IInstanceService.sol";
35
- import {IPoolService} from "./IPoolService.sol";
36
- import {IRegistryService} from "../registry/IRegistryService.sol";
37
- import {IStaking} from "../staking/IStaking.sol";
38
- import {InstanceService} from "../instance/InstanceService.sol";
39
25
  import {InstanceReader} from "../instance/InstanceReader.sol";
40
26
  import {InstanceStore} from "../instance/InstanceStore.sol";
41
- import {IComponent} from "../shared/IComponent.sol";
42
- import {IPoolComponent} from "./IPoolComponent.sol";
43
27
 
44
28
  string constant POOL_SERVICE_NAME = "PoolService";
45
29
 
@@ -47,14 +31,8 @@ contract PoolService is
47
31
  ComponentVerifyingService,
48
32
  IPoolService
49
33
  {
50
- using NftIdLib for NftId;
51
- using AmountLib for Amount;
52
-
53
34
  IBundleService internal _bundleService;
54
35
  IComponentService internal _componentService;
55
- IInstanceService private _instanceService;
56
- IRegistryService private _registryService;
57
-
58
36
  IStaking private _staking;
59
37
 
60
38
  function _initialize(
@@ -62,191 +40,292 @@ contract PoolService is
62
40
  bytes memory data
63
41
  )
64
42
  internal
65
- initializer
66
43
  virtual override
44
+ initializer()
67
45
  {
68
46
  (
69
- address registryAddress,,
70
- //address managerAddress
47
+ address registryAddress,
71
48
  address authority
72
- ) = abi.decode(data, (address, address, address));
49
+ ) = abi.decode(data, (address, address));
73
50
 
74
- initializeService(registryAddress, authority, owner);
51
+ _initializeService(registryAddress, authority, owner);
75
52
 
76
- _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
77
53
  _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
78
- _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
79
54
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
80
-
81
55
  _staking = IStaking(getRegistry().getStakingAddress());
82
56
 
83
- registerInterface(type(IPoolService).interfaceId);
57
+ _registerInterface(type(IPoolService).interfaceId);
84
58
  }
85
59
 
86
60
 
87
- function setMaxCapitalAmount(Amount maxCapitalAmount)
61
+ /// @inheritdoc IPoolService
62
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
88
63
  external
89
64
  virtual
90
65
  {
91
- /*
92
66
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
93
67
  InstanceReader instanceReader = instance.getInstanceReader();
68
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
94
69
 
95
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
96
- IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
97
- Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
98
-
99
- poolInfo.maxCapitalAmount = maxCapitalAmount;
70
+ Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
71
+ poolInfo.maxBalanceAmount = maxBalanceAmount;
100
72
  instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
101
73
 
102
- emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
103
- */
74
+ emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
104
75
  }
105
76
 
106
- function setBundleOwnerRole(RoleId bundleOwnerRole)
77
+
78
+ /// @inheritdoc IPoolService
79
+ function createBundle(
80
+ address bundleOwner, // initial bundle owner
81
+ Fee memory fee, // fees deducted from premium that go to bundle owner
82
+ Seconds lifetime, // initial duration for which new policies are covered
83
+ bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
84
+ )
85
+ external
86
+ virtual
87
+ returns(NftId bundleNftId)
88
+ {
89
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
90
+
91
+ // create the empty bundle
92
+ bundleNftId = _bundleService.create(
93
+ instance,
94
+ poolNftId,
95
+ bundleOwner,
96
+ fee,
97
+ AmountLib.zero(),
98
+ lifetime,
99
+ filter);
100
+
101
+ emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
102
+ }
103
+
104
+
105
+ function closeBundle(NftId bundleNftId)
107
106
  external
108
107
  virtual
109
108
  {
109
+ _checkNftType(bundleNftId, BUNDLE());
110
+
110
111
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
111
- InstanceReader instanceReader = instance.getInstanceReader();
112
112
 
113
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
114
- IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
113
+ // TODO get performance fee for pool (#477)
115
114
 
116
- // bundle owner role may only be set once per pool
117
- if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
118
- revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
119
- }
115
+ // releasing collateral in bundle
116
+ (Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
120
117
 
121
- poolInfo.bundleOwnerRole = bundleOwnerRole;
122
- instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
118
+ _componentService.decreasePoolBalance(
119
+ instance.getInstanceStore(),
120
+ poolNftId,
121
+ unstakedAmount + feeAmount,
122
+ AmountLib.zero());
123
+
124
+ emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
123
125
 
124
- emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
126
+ if ((unstakedAmount + feeAmount).gtz()){
127
+ IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
128
+ poolComponentInfo.tokenHandler.distributeTokens(
129
+ poolComponentInfo.wallet,
130
+ getRegistry().ownerOf(bundleNftId),
131
+ unstakedAmount + feeAmount);
132
+ }
125
133
  }
126
134
 
127
135
 
128
- function setFees(
129
- Fee memory poolFee,
130
- Fee memory stakingFee,
131
- Fee memory performanceFee
132
- )
136
+ /// @inheritdoc IPoolService
137
+ function processFundedClaim(
138
+ NftId policyNftId,
139
+ ClaimId claimId,
140
+ Amount availableAmount
141
+ )
133
142
  external
134
143
  virtual
135
144
  {
145
+ _checkNftType(policyNftId, POLICY());
146
+
136
147
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
148
+ InstanceReader instanceReader = instance.getInstanceReader();
149
+ NftId productNftId = _getProductNftId(poolNftId);
150
+
151
+ // check policy matches with calling pool
152
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
153
+ if(policyInfo.productNftId != productNftId) {
154
+ revert ErrorPoolServicePolicyPoolMismatch(
155
+ policyNftId,
156
+ policyInfo.productNftId,
157
+ productNftId);
158
+ }
137
159
 
138
- IComponents.PoolInfo memory poolInfo = instance.getInstanceReader().getPoolInfo(poolNftId);
139
- poolInfo.poolFee = poolFee;
140
- poolInfo.stakingFee = stakingFee;
141
- poolInfo.performanceFee = performanceFee;
160
+ emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
142
161
 
143
- instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
144
-
145
- // TODO add logging
162
+ // callback to product component if applicable
163
+ if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
164
+ address productAddress = getRegistry().getObjectAddress(productNftId);
165
+ IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
166
+ }
146
167
  }
147
168
 
148
- function createBundle(
149
- address bundleOwner, // initial bundle owner
150
- Fee memory fee, // fees deducted from premium that go to bundle owner
151
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
152
- Seconds lifetime, // initial duration for which new policies are covered
153
- bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
154
- )
169
+
170
+ /// @inheritdoc IPoolService
171
+ function stake(NftId bundleNftId, Amount amount)
155
172
  external
156
173
  virtual
157
- returns(NftId bundleNftId)
174
+ // TODO: restricted() (once #462 is done)
175
+ returns(Amount netAmount)
158
176
  {
177
+ _checkNftType(bundleNftId, BUNDLE());
178
+
159
179
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
160
180
  InstanceReader instanceReader = instance.getInstanceReader();
181
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
182
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
161
183
 
162
- (
163
- Amount stakingFeeAmount,
164
- Amount stakingNetAmount
165
- ) = FeeLib.calculateFee(
166
- _getStakingFee(instanceReader, poolNftId),
167
- stakingAmount);
184
+ if (bundleInfo.poolNftId != poolNftId) {
185
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
186
+ }
168
187
 
169
- bundleNftId = _bundleService.create(
170
- instance,
171
- poolNftId,
172
- bundleOwner,
173
- fee,
174
- stakingNetAmount,
175
- lifetime,
176
- filter);
188
+ {
189
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
190
+ if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
191
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
192
+ }
193
+ }
194
+
195
+ // calculate fees
196
+ IRegistry registry = getRegistry();
197
+ Amount feeAmount;
198
+
199
+ {
200
+ NftId productNftId = registry.getObjectInfo(poolNftId).parentNftId;
201
+ Fee memory stakingFee = instanceReader.getProductInfo(productNftId).stakingFee;
202
+ (
203
+ feeAmount,
204
+ netAmount
205
+ ) = FeeLib.calculateFee(
206
+ stakingFee,
207
+ amount);
208
+ }
177
209
 
178
- // pool book keeping
210
+ // do all the bookkeeping
179
211
  _componentService.increasePoolBalance(
180
212
  instance.getInstanceStore(),
181
213
  poolNftId,
182
- stakingAmount,
183
- stakingFeeAmount);
214
+ netAmount,
215
+ feeAmount);
184
216
 
185
- // pool bookkeeping and collect tokens from bundle owner
217
+ _bundleService.stake(instance, bundleNftId, netAmount);
218
+
219
+ // collect tokens from bundle owner
220
+ address bundleOwner = registry.ownerOf(bundleNftId);
221
+ emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
222
+
223
+ // TODO only collect staking token when pool is not externally managed
186
224
  _collectStakingAmount(
187
225
  instanceReader,
188
226
  poolNftId,
189
227
  bundleOwner,
190
- stakingAmount);
191
-
192
- emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
228
+ amount);
193
229
  }
194
230
 
195
- function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
196
- internal
231
+ /// @inheritdoc IPoolService
232
+ function unstake(NftId bundleNftId, Amount amount)
233
+ external
197
234
  virtual
198
- view
199
- returns (Fee memory stakingFee)
235
+ // TODO: restricted() (once #462 is done)
236
+ returns(Amount netAmount)
200
237
  {
201
- NftId productNftId = instanceReader.getPoolInfo(poolNftId).productNftId;
202
- return instanceReader.getPoolInfo(productNftId).stakingFee;
238
+ _checkNftType(bundleNftId, BUNDLE());
239
+
240
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
241
+ InstanceReader instanceReader = instance.getInstanceReader();
242
+ InstanceStore instanceStore = instance.getInstanceStore();
243
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
244
+
245
+ if (bundleInfo.poolNftId != poolNftId) {
246
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
247
+ }
248
+
249
+ // call bundle service for bookkeeping and additional checks
250
+ Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
251
+
252
+ // Important: from now on work only with unstakedAmount as it is the only reliable amount.
253
+ // if amount was max, this was set to the available amount
254
+
255
+ // TODO: handle performance fees (issue #477)
256
+
257
+ // update pool bookkeeping - performance fees stay in the pool, but as fees
258
+ _componentService.decreasePoolBalance(
259
+ instanceStore,
260
+ poolNftId,
261
+ unstakedAmount,
262
+ AmountLib.zero());
263
+
264
+ IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
265
+
266
+ // transfer amount to bundle owner
267
+ address owner = getRegistry().ownerOf(bundleNftId);
268
+ emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
269
+ poolComponentInfo.tokenHandler.distributeTokens(
270
+ poolComponentInfo.wallet,
271
+ owner,
272
+ unstakedAmount);
273
+
274
+ return unstakedAmount;
203
275
  }
204
276
 
205
- function closeBundle(NftId bundleNftId)
277
+
278
+ function fundPoolWallet(NftId poolNftId, Amount amount)
206
279
  external
207
280
  virtual
281
+ restricted()
208
282
  {
209
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
210
-
211
- // TODO book keeping for pool collateral released outside of retention level
283
+ _checkNftType(poolNftId, POOL());
284
+ // TODO check that poolNftId is externally managed
285
+ // TODO implement
286
+ }
212
287
 
213
- // releasing collateral in bundle
214
- _bundleService.close(instance, bundleNftId);
215
288
 
216
- // TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
289
+ function defundPoolWallet(NftId poolNftId, Amount amount)
290
+ external
291
+ virtual
292
+ restricted()
293
+ {
294
+ _checkNftType(poolNftId, POOL());
217
295
 
218
- emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
296
+ // TODO check that poolNftId is externally managed
297
+ // TODO implement
219
298
  }
220
299
 
221
-
222
300
  function processSale(
223
301
  NftId bundleNftId,
224
- IPolicy.Premium memory premium
302
+ IPolicy.PremiumInfo memory premium
225
303
  )
226
304
  external
227
305
  virtual
228
306
  restricted()
229
307
  {
308
+ _checkNftType(bundleNftId, BUNDLE());
309
+
230
310
  IRegistry registry = getRegistry();
231
- IRegistry.ObjectInfo memory bundleObjectInfo = registry.getObjectInfo(bundleNftId);
232
- IRegistry.ObjectInfo memory poolObjectInfo = registry.getObjectInfo(bundleObjectInfo.parentNftId);
233
- IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
234
- IInstance instance = IInstance(instanceObjectInfo.objectAddress);
311
+ IRegistry.ObjectInfo memory bundleInfo = registry.getObjectInfo(bundleNftId);
312
+ IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(bundleInfo.parentNftId);
313
+ IInstance instance = _getInstanceForComponent(registry, poolInfo);
235
314
 
236
- Amount poolFeeAmount = AmountLib.toAmount(premium.poolFeeFixAmount + premium.poolFeeVarAmount);
237
- Amount bundleFeeAmount = AmountLib.toAmount(premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
238
- Amount bundleNetAmount = AmountLib.toAmount(premium.netPremiumAmount);
315
+ Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
316
+ Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
317
+ Amount bundleNetAmount = premium.netPremiumAmount;
239
318
 
240
319
  InstanceStore instanceStore = instance.getInstanceStore();
241
320
  _componentService.increasePoolBalance(
242
321
  instanceStore,
243
- poolObjectInfo.nftId,
322
+ poolInfo.nftId,
244
323
  bundleNetAmount + bundleFeeAmount,
245
324
  poolFeeAmount);
246
325
 
247
326
  _componentService.increaseBundleBalance(
248
327
  instanceStore,
249
- bundleObjectInfo.nftId,
328
+ bundleInfo.nftId,
250
329
  bundleNetAmount,
251
330
  bundleFeeAmount);
252
331
  }
@@ -264,13 +343,17 @@ contract PoolService is
264
343
  virtual
265
344
  restricted()
266
345
  returns (
267
- Amount localCollateralAmount,
268
- Amount totalCollateralAmount
346
+ Amount totalCollateralAmount,
347
+ Amount localCollateralAmount
269
348
  )
270
349
  {
350
+ _checkNftType(productNftId, PRODUCT());
351
+ _checkNftType(applicationNftId, POLICY());
352
+ _checkNftType(bundleNftId, BUNDLE());
353
+
271
354
  (
272
- localCollateralAmount,
273
- totalCollateralAmount
355
+ totalCollateralAmount,
356
+ localCollateralAmount
274
357
  ) = calculateRequiredCollateral(
275
358
  instance.getInstanceReader(),
276
359
  productNftId,
@@ -288,16 +371,9 @@ contract PoolService is
288
371
  instance.getNftId(),
289
372
  token,
290
373
  totalCollateralAmount);
291
-
292
- // hierarhical riskpool setup
293
- // TODO loop in with pool component to guarantee availability of external capital
294
- if(totalCollateralAmount > localCollateralAmount) {
295
-
296
- }
297
374
  }
298
375
 
299
-
300
- function reduceCollateral(
376
+ function processPayout(
301
377
  IInstance instance,
302
378
  address token,
303
379
  NftId policyNftId,
@@ -308,6 +384,24 @@ contract PoolService is
308
384
  virtual
309
385
  restricted()
310
386
  {
387
+ _checkNftType(policyNftId, POLICY());
388
+
389
+ NftId bundleNftId = policyInfo.bundleNftId;
390
+ NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
391
+ InstanceStore instanceStore = instance.getInstanceStore();
392
+
393
+ _componentService.decreasePoolBalance(
394
+ instanceStore,
395
+ poolNftId,
396
+ payoutAmount,
397
+ AmountLib.zero());
398
+
399
+ _componentService.decreaseBundleBalance(
400
+ instanceStore,
401
+ bundleNftId,
402
+ payoutAmount,
403
+ AmountLib.zero());
404
+
311
405
  _bundleService.releaseCollateral(
312
406
  instance,
313
407
  policyNftId,
@@ -334,6 +428,8 @@ contract PoolService is
334
428
  virtual
335
429
  restricted()
336
430
  {
431
+ _checkNftType(policyNftId, POLICY());
432
+
337
433
  Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
338
434
 
339
435
  _bundleService.releaseCollateral(
@@ -362,16 +458,18 @@ contract PoolService is
362
458
  public
363
459
  view
364
460
  returns(
365
- Amount localCollateralAmount,
366
- Amount totalCollateralAmount
461
+ Amount totalCollateralAmount,
462
+ Amount localCollateralAmount
367
463
  )
368
464
  {
465
+ _checkNftType(productNftId, PRODUCT());
466
+
369
467
  NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
370
468
  IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
371
469
 
372
470
  (
373
- localCollateralAmount,
374
- totalCollateralAmount
471
+ totalCollateralAmount,
472
+ localCollateralAmount
375
473
  ) = calculateRequiredCollateral(
376
474
  poolInfo.collateralizationLevel,
377
475
  poolInfo.retentionLevel,
@@ -387,18 +485,17 @@ contract PoolService is
387
485
  public
388
486
  pure
389
487
  returns(
390
- Amount localCollateralAmount,
391
- Amount totalCollateralAmount
488
+ Amount totalCollateralAmount,
489
+ Amount localCollateralAmount
392
490
  )
393
491
  {
394
- // TODO define if only applies to local collateral
395
- // TODO add minimalistic implementation
396
-
397
- // assumptions
398
- // - collateralizationLevel == 1.0
399
- // - retentionLevel == 1.0
400
- localCollateralAmount = sumInsuredAmount;
401
- totalCollateralAmount = localCollateralAmount;
492
+ // collateralization is applied to sum insured
493
+ UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
494
+ totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
495
+
496
+ // retention level defines how much capital is required locally
497
+ localCollateralAmount = AmountLib.toAmount(
498
+ (retentionLevel * totalUFixed).toInt());
402
499
  }
403
500
 
404
501
 
@@ -407,6 +504,7 @@ contract PoolService is
407
504
  Amount stakingAmount
408
505
  )
409
506
  internal
507
+ pure
410
508
  returns (Amount stakingNetAmount)
411
509
  {
412
510
  stakingNetAmount = stakingAmount;
@@ -421,7 +519,6 @@ contract PoolService is
421
519
  }
422
520
 
423
521
 
424
- // TODO create (I)TreasuryService that deals with all gif related token transfers
425
522
  /// @dev transfers the specified amount from the bundle owner to the pool's wallet
426
523
  function _collectStakingAmount(
427
524
  InstanceReader instanceReader,
@@ -434,15 +531,11 @@ contract PoolService is
434
531
 
435
532
  // collecting investor token
436
533
  IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
437
- TokenHandler tokenHandler = componentInfo.tokenHandler;
438
534
  address poolWallet = componentInfo.wallet;
439
-
440
- if(amount.gtz()) {
441
- tokenHandler.transfer(
442
- bundleOwner,
443
- poolWallet,
444
- amount);
445
- }
535
+ componentInfo.tokenHandler.collectTokens(
536
+ bundleOwner,
537
+ poolWallet,
538
+ amount);
446
539
  }
447
540
 
448
541
  function _getDomain() internal pure override returns(ObjectType) {
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {PoolService} from "./PoolService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract PoolServiceManager is ProxyManager {
12
9
 
@@ -15,14 +12,14 @@ contract PoolServiceManager is ProxyManager {
15
12
  /// @dev initializes proxy manager with pool service implementation
16
13
  constructor(
17
14
  address authority,
18
- address registryAddress,
15
+ address registry,
19
16
  bytes32 salt
20
17
  )
21
- ProxyManager(registryAddress)
22
18
  {
23
19
  PoolService poolSrv = new PoolService{salt: salt}();
24
- bytes memory data = abi.encode(registryAddress, address(this), authority);
25
- IVersionable versionable = deployDetermenistic(
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
26
23
  address(poolSrv),
27
24
  data,
28
25
  salt);