@etherisc/gif-next 0.0.2-df73b56-462 → 0.0.2-dfb8aa3-070

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 (406) hide show
  1. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
  3. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  4. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  6. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -13
  9. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  13. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +154 -94
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +94 -58
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +136 -86
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +80 -60
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +81 -58
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -0
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +156 -96
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +137 -77
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +153 -106
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +241 -129
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  55. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
  57. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  58. package/artifacts/contracts/instance/Instance.sol/Instance.json +62 -40
  59. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +148 -118
  61. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +275 -77
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +72 -130
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +48 -40
  69. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +175 -104
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  73. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +135 -75
  89. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  91. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +76 -53
  94. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  96. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +89 -53
  98. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +86 -47
  100. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +48 -36
  102. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +89 -66
  104. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
  106. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +180 -82
  108. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +90 -58
  110. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
  112. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +76 -53
  114. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +200 -115
  116. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/Pool.sol/Pool.json +89 -53
  118. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +312 -161
  120. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +81 -41
  122. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -32
  124. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -33
  126. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +145 -73
  128. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  130. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +175 -90
  132. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +82 -58
  134. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
  136. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +64 -8
  138. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +58 -0
  140. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
  142. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +132 -73
  144. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
  146. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +139 -60
  148. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +67 -47
  150. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.json +149 -107
  152. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +61 -45
  154. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  155. package/artifacts/contracts/product/Product.sol/Product.json +145 -73
  156. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.json +60 -26
  158. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +42 -30
  160. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  162. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +67 -15
  164. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  166. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  168. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/Registry.sol/Registry.json +111 -51
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +193 -165
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +73 -172
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +41 -29
  176. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  178. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +121 -223
  180. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  182. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  184. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  185. package/artifacts/contracts/shared/Component.sol/Component.json +68 -28
  186. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +350 -155
  188. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +83 -63
  190. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
  192. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
  194. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -28
  196. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +76 -53
  200. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  202. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  203. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  204. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  206. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  208. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  210. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  213. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  214. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  215. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +89 -53
  216. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  217. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  218. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  220. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  221. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  222. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  224. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  225. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +3 -3
  226. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  227. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
  228. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  229. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  230. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  231. package/artifacts/contracts/shared/Service.sol/Service.json +42 -0
  232. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  233. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  234. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  235. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  236. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  237. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +55 -28
  238. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  239. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  240. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  241. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  242. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  243. package/artifacts/contracts/staking/Staking.sol/Staking.json +138 -78
  244. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  245. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  246. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  247. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +68 -42
  248. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  249. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  250. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  251. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +66 -53
  252. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +45 -33
  254. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
  256. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  257. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  258. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  259. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  261. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  264. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  266. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  268. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  270. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  272. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  273. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  274. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  276. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  278. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  280. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  282. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  284. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  286. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  291. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  297. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +28 -12
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  303. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  304. package/contracts/authorization/AccessAdmin.sol +65 -61
  305. package/contracts/authorization/Authorization.sol +111 -39
  306. package/contracts/authorization/IAccess.sol +1 -0
  307. package/contracts/authorization/IAccessAdmin.sol +4 -2
  308. package/contracts/authorization/IAuthorization.sol +13 -7
  309. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  310. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  311. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  312. package/contracts/distribution/BasicDistribution.sol +2 -1
  313. package/contracts/distribution/Distribution.sol +6 -16
  314. package/contracts/distribution/DistributionService.sol +55 -36
  315. package/contracts/distribution/IDistributionComponent.sol +1 -1
  316. package/contracts/examples/fire/DamageLevel.sol +59 -0
  317. package/contracts/examples/fire/FirePool.sol +73 -0
  318. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  319. package/contracts/examples/fire/FireProduct.sol +415 -0
  320. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  321. package/contracts/examples/fire/FireUSD.sol +26 -0
  322. package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -4
  323. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  324. package/contracts/examples/unpermissioned/SimplePool.sol +4 -4
  325. package/contracts/examples/unpermissioned/SimpleProduct.sol +10 -10
  326. package/contracts/instance/IInstance.sol +4 -1
  327. package/contracts/instance/IInstanceService.sol +0 -20
  328. package/contracts/instance/Instance.sol +20 -17
  329. package/contracts/instance/InstanceAdmin.sol +22 -30
  330. package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
  331. package/contracts/instance/InstanceReader.sol +83 -18
  332. package/contracts/instance/InstanceService.sol +15 -70
  333. package/contracts/instance/module/IComponents.sol +6 -3
  334. package/contracts/instance/module/IPolicy.sol +2 -2
  335. package/contracts/oracle/BasicOracle.sol +0 -1
  336. package/contracts/oracle/IOracleService.sol +2 -1
  337. package/contracts/oracle/Oracle.sol +4 -15
  338. package/contracts/oracle/OracleService.sol +39 -29
  339. package/contracts/pool/BasicPool.sol +14 -26
  340. package/contracts/pool/BasicPoolAuthorization.sol +0 -1
  341. package/contracts/pool/BundleService.sol +75 -20
  342. package/contracts/pool/IBundleService.sol +9 -0
  343. package/contracts/pool/IPoolService.sol +21 -14
  344. package/contracts/pool/Pool.sol +22 -29
  345. package/contracts/pool/PoolService.sol +116 -80
  346. package/contracts/product/ApplicationService.sol +16 -4
  347. package/contracts/product/BasicProduct.sol +6 -6
  348. package/contracts/product/BasicProductAuthorization.sol +0 -1
  349. package/contracts/product/ClaimService.sol +108 -69
  350. package/contracts/product/IClaimService.sol +3 -2
  351. package/contracts/product/IPolicyService.sol +3 -0
  352. package/contracts/product/IPricingService.sol +9 -9
  353. package/contracts/product/IProductComponent.sol +23 -3
  354. package/contracts/product/PolicyService.sol +66 -21
  355. package/contracts/product/PricingService.sol +8 -8
  356. package/contracts/product/Product.sol +81 -52
  357. package/contracts/registry/ChainNft.sol +6 -9
  358. package/contracts/registry/IRegistry.sol +6 -3
  359. package/contracts/registry/IRegistryService.sol +5 -12
  360. package/contracts/registry/ITransferInterceptor.sol +1 -2
  361. package/contracts/registry/Registry.sol +21 -6
  362. package/contracts/registry/RegistryAdmin.sol +7 -23
  363. package/contracts/registry/RegistryService.sol +33 -44
  364. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  365. package/contracts/registry/ReleaseRegistry.sol +201 -191
  366. package/contracts/registry/ServiceAuthorizationV3.sol +14 -19
  367. package/contracts/shared/Component.sol +25 -28
  368. package/contracts/shared/ComponentService.sol +235 -131
  369. package/contracts/shared/ComponentVerifyingService.sol +22 -13
  370. package/contracts/shared/IComponent.sol +6 -2
  371. package/contracts/shared/IComponentService.sol +25 -13
  372. package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
  373. package/contracts/shared/ILifecycle.sol +3 -1
  374. package/contracts/shared/INftOwnable.sol +2 -0
  375. package/contracts/shared/IRegisterable.sol +11 -0
  376. package/contracts/shared/InstanceLinkedComponent.sol +68 -27
  377. package/contracts/shared/KeyValueStore.sol +1 -1
  378. package/contracts/shared/Lifecycle.sol +15 -4
  379. package/contracts/shared/NftOwnable.sol +23 -3
  380. package/contracts/shared/PolicyHolder.sol +4 -0
  381. package/contracts/shared/Registerable.sol +15 -5
  382. package/contracts/shared/Service.sol +4 -7
  383. package/contracts/staking/IStakingService.sol +0 -3
  384. package/contracts/staking/Staking.sol +2 -3
  385. package/contracts/staking/StakingReader.sol +12 -5
  386. package/contracts/staking/StakingService.sol +15 -15
  387. package/contracts/type/Amount.sol +15 -0
  388. package/contracts/type/ClaimId.sol +6 -1
  389. package/contracts/type/NftId.sol +1 -0
  390. package/contracts/type/ObjectType.sol +1 -0
  391. package/contracts/type/PayoutId.sol +10 -10
  392. package/contracts/type/RiskId.sol +15 -1
  393. package/contracts/type/RoleId.sol +0 -12
  394. package/contracts/type/StateId.sol +14 -1
  395. package/contracts/type/UFixed.sol +4 -0
  396. package/contracts/upgradeability/ProxyManager.sol +2 -1
  397. package/package.json +2 -1
  398. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  399. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  400. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  401. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  402. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  403. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  404. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  405. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  406. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -2,7 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount, AmountLib} from "../type/Amount.sol";
5
- import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
5
+ import {BUNDLE, COMPONENT, POLICY, POOL} from "../type/ObjectType.sol";
6
6
  import {ClaimId} from "../type/ClaimId.sol";
7
7
  import {IBundleService} from "./IBundleService.sol";
8
8
  import {IAuthorization} from "../authorization/IAuthorization.sol";
@@ -11,13 +11,12 @@ import {IPoolService} from "./IPoolService.sol";
11
11
  import {IComponents} from "../instance/module/IComponents.sol";
12
12
  import {IComponentService} from "../shared/IComponentService.sol";
13
13
  import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
14
- import {Fee, FeeLib} from "../type/Fee.sol";
15
- import {NftId, NftIdLib} from "../type/NftId.sol";
14
+ import {Fee} from "../type/Fee.sol";
15
+ import {NftId} from "../type/NftId.sol";
16
16
  import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
17
17
  import {Seconds} from "../type/Seconds.sol";
18
18
  import {Timestamp} from "../type/Timestamp.sol";
19
- import {TokenHandler} from "../shared/TokenHandler.sol";
20
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
+ import {UFixedLib} from "../type/UFixed.sol";
21
20
 
22
21
  abstract contract Pool is
23
22
  InstanceLinkedComponent,
@@ -41,16 +40,6 @@ abstract contract Pool is
41
40
  }
42
41
 
43
42
 
44
- function register()
45
- external
46
- virtual
47
- onlyOwner()
48
- {
49
- _getPoolStorage()._componentService.registerPool();
50
- _approveTokenHandler(type(uint256).max);
51
- }
52
-
53
-
54
43
  /// @dev see {IPoolComponent.verifyApplication}
55
44
  function verifyApplication(
56
45
  NftId applicationNftId,
@@ -62,6 +51,7 @@ abstract contract Pool is
62
51
  public
63
52
  virtual
64
53
  restricted()
54
+ onlyNftOfType(applicationNftId, POLICY())
65
55
  {
66
56
  if(!applicationMatchesBundle(
67
57
  applicationNftId,
@@ -87,6 +77,7 @@ abstract contract Pool is
87
77
  public
88
78
  virtual
89
79
  restricted()
80
+ onlyNftOfType(policyNftId, POLICY())
90
81
  {
91
82
  // default implementation is empty
92
83
  }
@@ -105,6 +96,8 @@ abstract contract Pool is
105
96
  public
106
97
  virtual
107
98
  view
99
+ onlyNftOfType(applicationNftId, POLICY())
100
+ onlyNftOfType(bundleNftId, BUNDLE())
108
101
  returns (bool isMatching)
109
102
  {
110
103
  return true;
@@ -116,6 +109,7 @@ abstract contract Pool is
116
109
  virtual
117
110
  restricted()
118
111
  onlyBundleOwner(bundleNftId)
112
+ onlyNftOfType(bundleNftId, BUNDLE())
119
113
  returns (Amount withdrawnAmount)
120
114
  {
121
115
  return _withdrawBundleFees(bundleNftId, amount);
@@ -144,13 +138,12 @@ abstract contract Pool is
144
138
 
145
139
  function _initializePool(
146
140
  address registry,
147
- NftId instanceNftId,
141
+ NftId productNftId,
148
142
  string memory name,
149
143
  address token,
150
144
  IAuthorization authorization,
151
145
  bool isInterceptingNftTransfers,
152
146
  address initialOwner,
153
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
154
147
  bytes memory componentData // component specifidc data
155
148
  )
156
149
  internal
@@ -159,14 +152,13 @@ abstract contract Pool is
159
152
  {
160
153
  _initializeInstanceLinkedComponent(
161
154
  registry,
162
- instanceNftId,
155
+ productNftId,
163
156
  name,
164
157
  token,
165
158
  POOL(),
166
159
  authorization,
167
160
  isInterceptingNftTransfers,
168
161
  initialOwner,
169
- registryData,
170
162
  componentData);
171
163
 
172
164
  PoolStorage storage $ = _getPoolStorage();
@@ -276,16 +268,6 @@ abstract contract Pool is
276
268
  _getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
277
269
  }
278
270
 
279
- /// @dev Sets the required role to create/own bundles.
280
- /// May only be called once after setting up a pool.
281
- /// May only be called by pool owner.
282
- function _setBundleOwnerRole(RoleId bundleOwnerRole)
283
- internal
284
- virtual
285
- {
286
- _getPoolStorage()._poolService.setBundleOwnerRole(bundleOwnerRole);
287
- }
288
-
289
271
 
290
272
  /// @dev Update pool fees to the specified values.
291
273
  /// Pool fee: are deducted from the premium amount and goes to the pool owner.
@@ -334,6 +316,17 @@ abstract contract Pool is
334
316
  return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
335
317
  }
336
318
 
319
+ function _processFundedClaim(
320
+ NftId policyNftId,
321
+ ClaimId claimId,
322
+ Amount availableAmount
323
+ )
324
+ internal
325
+ {
326
+ _getPoolStorage()._poolService.processFundedClaim(
327
+ policyNftId, claimId, availableAmount);
328
+ }
329
+
337
330
  function _getPoolStorage() private pure returns (PoolStorage storage $) {
338
331
  assembly {
339
332
  $.slot := POOL_STORAGE_LOCATION_V1
@@ -6,18 +6,17 @@ import {IBundleService} from "./IBundleService.sol";
6
6
  import {IComponents} from "../instance/module/IComponents.sol";
7
7
  import {IComponentService} from "../shared/IComponentService.sol";
8
8
  import {IInstance} from "../instance/IInstance.sol";
9
- import {IInstanceService} from "../instance/IInstanceService.sol";
10
9
  import {IPolicy} from "../instance/module/IPolicy.sol";
10
+ import {IProductComponent} from "../product/IProductComponent.sol";
11
11
  import {IPoolService} from "./IPoolService.sol";
12
12
  import {IRegistry} from "../registry/IRegistry.sol";
13
- import {IRegistryService} from "../registry/IRegistryService.sol";
14
13
  import {IStaking} from "../staking/IStaking.sol";
15
14
 
16
15
  import {Amount, AmountLib} from "../type/Amount.sol";
16
+ import {ClaimId} from "../type/ClaimId.sol";
17
17
  import {Fee, FeeLib} from "../type/Fee.sol";
18
18
  import {NftId} from "../type/NftId.sol";
19
- import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
20
- import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
19
+ import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
21
20
  import {Fee, FeeLib} from "../type/Fee.sol";
22
21
  import {KEEP_STATE} from "../type/StateId.sol";
23
22
  import {Seconds} from "../type/Seconds.sol";
@@ -34,9 +33,6 @@ contract PoolService is
34
33
  {
35
34
  IBundleService internal _bundleService;
36
35
  IComponentService internal _componentService;
37
- IInstanceService private _instanceService;
38
- IRegistryService private _registryService;
39
-
40
36
  IStaking private _staking;
41
37
 
42
38
  function _initialize(
@@ -54,16 +50,14 @@ contract PoolService is
54
50
 
55
51
  _initializeService(registryAddress, authority, owner);
56
52
 
57
- _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
58
53
  _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
59
- _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
60
54
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
61
-
62
55
  _staking = IStaking(getRegistry().getStakingAddress());
63
56
 
64
57
  _registerInterface(type(IPoolService).interfaceId);
65
58
  }
66
59
 
60
+
67
61
  /// @inheritdoc IPoolService
68
62
  function setMaxBalanceAmount(Amount maxBalanceAmount)
69
63
  external
@@ -80,26 +74,6 @@ contract PoolService is
80
74
  emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
81
75
  }
82
76
 
83
- function setBundleOwnerRole(RoleId bundleOwnerRole)
84
- external
85
- virtual
86
- {
87
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
88
- InstanceReader instanceReader = instance.getInstanceReader();
89
-
90
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
91
- IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
92
-
93
- // bundle owner role may only be set once per pool
94
- if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
95
- revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
96
- }
97
-
98
- poolInfo.bundleOwnerRole = bundleOwnerRole;
99
- instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
100
-
101
- emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
102
- }
103
77
 
104
78
  /// @inheritdoc IPoolService
105
79
  function createBundle(
@@ -127,20 +101,13 @@ contract PoolService is
127
101
  emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
128
102
  }
129
103
 
130
- function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
131
- internal
132
- virtual
133
- view
134
- returns (Fee memory stakingFee)
135
- {
136
- NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
137
- return instanceReader.getProductInfo(productNftId).stakingFee;
138
- }
139
104
 
140
105
  function closeBundle(NftId bundleNftId)
141
106
  external
142
107
  virtual
143
108
  {
109
+ _checkNftType(bundleNftId, BUNDLE());
110
+
144
111
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
145
112
 
146
113
  // TODO get performance fee for pool (#477)
@@ -165,6 +132,41 @@ contract PoolService is
165
132
  }
166
133
  }
167
134
 
135
+
136
+ /// @inheritdoc IPoolService
137
+ function processFundedClaim(
138
+ NftId policyNftId,
139
+ ClaimId claimId,
140
+ Amount availableAmount
141
+ )
142
+ external
143
+ virtual
144
+ {
145
+ _checkNftType(policyNftId, POLICY());
146
+
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
+ }
159
+
160
+ emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
161
+
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
+ }
167
+ }
168
+
169
+
168
170
  /// @inheritdoc IPoolService
169
171
  function stake(NftId bundleNftId, Amount amount)
170
172
  external
@@ -172,6 +174,8 @@ contract PoolService is
172
174
  // TODO: restricted() (once #462 is done)
173
175
  returns(Amount netAmount)
174
176
  {
177
+ _checkNftType(bundleNftId, BUNDLE());
178
+
175
179
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
176
180
  InstanceReader instanceReader = instance.getInstanceReader();
177
181
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
@@ -189,13 +193,19 @@ contract PoolService is
189
193
  }
190
194
 
191
195
  // calculate fees
196
+ IRegistry registry = getRegistry();
192
197
  Amount feeAmount;
193
- (
194
- feeAmount,
195
- netAmount
196
- ) = FeeLib.calculateFee(
197
- _getStakingFee(instanceReader, poolNftId),
198
- amount);
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
+ }
199
209
 
200
210
  // do all the bookkeeping
201
211
  _componentService.increasePoolBalance(
@@ -207,7 +217,7 @@ contract PoolService is
207
217
  _bundleService.stake(instance, bundleNftId, netAmount);
208
218
 
209
219
  // collect tokens from bundle owner
210
- address bundleOwner = getRegistry().ownerOf(bundleNftId);
220
+ address bundleOwner = registry.ownerOf(bundleNftId);
211
221
  emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
212
222
 
213
223
  // TODO only collect staking token when pool is not externally managed
@@ -225,6 +235,8 @@ contract PoolService is
225
235
  // TODO: restricted() (once #462 is done)
226
236
  returns(Amount netAmount)
227
237
  {
238
+ _checkNftType(bundleNftId, BUNDLE());
239
+
228
240
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
229
241
  InstanceReader instanceReader = instance.getInstanceReader();
230
242
  InstanceStore instanceStore = instance.getInstanceStore();
@@ -250,14 +262,15 @@ contract PoolService is
250
262
  AmountLib.zero());
251
263
 
252
264
  IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
253
- address poolWallet = poolComponentInfo.wallet;
265
+
254
266
  // transfer amount to bundle owner
255
267
  address owner = getRegistry().ownerOf(bundleNftId);
256
268
  emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
257
269
  poolComponentInfo.tokenHandler.distributeTokens(
258
- poolWallet,
270
+ poolComponentInfo.wallet,
259
271
  owner,
260
272
  unstakedAmount);
273
+
261
274
  return unstakedAmount;
262
275
  }
263
276
 
@@ -267,6 +280,7 @@ contract PoolService is
267
280
  virtual
268
281
  restricted()
269
282
  {
283
+ _checkNftType(poolNftId, POOL());
270
284
  // TODO check that poolNftId is externally managed
271
285
  // TODO implement
272
286
  }
@@ -277,6 +291,8 @@ contract PoolService is
277
291
  virtual
278
292
  restricted()
279
293
  {
294
+ _checkNftType(poolNftId, POOL());
295
+
280
296
  // TODO check that poolNftId is externally managed
281
297
  // TODO implement
282
298
  }
@@ -289,11 +305,12 @@ contract PoolService is
289
305
  virtual
290
306
  restricted()
291
307
  {
308
+ _checkNftType(bundleNftId, BUNDLE());
309
+
292
310
  IRegistry registry = getRegistry();
293
- IRegistry.ObjectInfo memory bundleObjectInfo = registry.getObjectInfo(bundleNftId);
294
- IRegistry.ObjectInfo memory poolObjectInfo = registry.getObjectInfo(bundleObjectInfo.parentNftId);
295
- IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
296
- 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);
297
314
 
298
315
  Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
299
316
  Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
@@ -302,13 +319,13 @@ contract PoolService is
302
319
  InstanceStore instanceStore = instance.getInstanceStore();
303
320
  _componentService.increasePoolBalance(
304
321
  instanceStore,
305
- poolObjectInfo.nftId,
322
+ poolInfo.nftId,
306
323
  bundleNetAmount + bundleFeeAmount,
307
324
  poolFeeAmount);
308
325
 
309
326
  _componentService.increaseBundleBalance(
310
327
  instanceStore,
311
- bundleObjectInfo.nftId,
328
+ bundleInfo.nftId,
312
329
  bundleNetAmount,
313
330
  bundleFeeAmount);
314
331
  }
@@ -326,13 +343,17 @@ contract PoolService is
326
343
  virtual
327
344
  restricted()
328
345
  returns (
329
- Amount localCollateralAmount,
330
- Amount totalCollateralAmount
346
+ Amount totalCollateralAmount,
347
+ Amount localCollateralAmount
331
348
  )
332
349
  {
350
+ _checkNftType(productNftId, PRODUCT());
351
+ _checkNftType(applicationNftId, POLICY());
352
+ _checkNftType(bundleNftId, BUNDLE());
353
+
333
354
  (
334
- localCollateralAmount,
335
- totalCollateralAmount
355
+ totalCollateralAmount,
356
+ localCollateralAmount
336
357
  ) = calculateRequiredCollateral(
337
358
  instance.getInstanceReader(),
338
359
  productNftId,
@@ -350,16 +371,9 @@ contract PoolService is
350
371
  instance.getNftId(),
351
372
  token,
352
373
  totalCollateralAmount);
353
-
354
- // hierarhical riskpool setup
355
- // TODO loop in with pool component to guarantee availability of external capital
356
- if(totalCollateralAmount > localCollateralAmount) {
357
-
358
- }
359
374
  }
360
375
 
361
-
362
- function reduceCollateral(
376
+ function processPayout(
363
377
  IInstance instance,
364
378
  address token,
365
379
  NftId policyNftId,
@@ -370,6 +384,24 @@ contract PoolService is
370
384
  virtual
371
385
  restricted()
372
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
+
373
405
  _bundleService.releaseCollateral(
374
406
  instance,
375
407
  policyNftId,
@@ -396,6 +428,8 @@ contract PoolService is
396
428
  virtual
397
429
  restricted()
398
430
  {
431
+ _checkNftType(policyNftId, POLICY());
432
+
399
433
  Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
400
434
 
401
435
  _bundleService.releaseCollateral(
@@ -424,16 +458,18 @@ contract PoolService is
424
458
  public
425
459
  view
426
460
  returns(
427
- Amount localCollateralAmount,
428
- Amount totalCollateralAmount
461
+ Amount totalCollateralAmount,
462
+ Amount localCollateralAmount
429
463
  )
430
464
  {
465
+ _checkNftType(productNftId, PRODUCT());
466
+
431
467
  NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
432
468
  IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
433
469
 
434
470
  (
435
- localCollateralAmount,
436
- totalCollateralAmount
471
+ totalCollateralAmount,
472
+ localCollateralAmount
437
473
  ) = calculateRequiredCollateral(
438
474
  poolInfo.collateralizationLevel,
439
475
  poolInfo.retentionLevel,
@@ -449,18 +485,17 @@ contract PoolService is
449
485
  public
450
486
  pure
451
487
  returns(
452
- Amount localCollateralAmount,
453
- Amount totalCollateralAmount
488
+ Amount totalCollateralAmount,
489
+ Amount localCollateralAmount
454
490
  )
455
491
  {
456
- // TODO define if only applies to local collateral
457
- // TODO add minimalistic implementation
458
-
459
- // assumptions
460
- // - collateralizationLevel == 1.0
461
- // - retentionLevel == 1.0
462
- localCollateralAmount = sumInsuredAmount;
463
- 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());
464
499
  }
465
500
 
466
501
 
@@ -469,6 +504,7 @@ contract PoolService is
469
504
  Amount stakingAmount
470
505
  )
471
506
  internal
507
+ pure
472
508
  returns (Amount stakingNetAmount)
473
509
  {
474
510
  stakingNetAmount = stakingAmount;
@@ -13,7 +13,7 @@ import {IRegistryService} from "../registry/IRegistryService.sol";
13
13
  import {AmountLib} from "../type/Amount.sol";
14
14
  import {Seconds} from "../type/Seconds.sol";
15
15
  import {zeroTimestamp} from "../type/Timestamp.sol";
16
- import {ObjectType, DISTRIBUTION, PRODUCT, REGISTRY, APPLICATION, POLICY, PRICE} from "../type/ObjectType.sol";
16
+ import {ObjectType, BUNDLE, DISTRIBUTION, PRODUCT, REGISTRY, APPLICATION, POLICY, PRICE} from "../type/ObjectType.sol";
17
17
  import {REVOKED} from "../type/StateId.sol";
18
18
  import {NftId, NftIdLib} from "../type/NftId.sol";
19
19
  import {ReferralId} from "../type/Referral.sol";
@@ -134,8 +134,11 @@ contract ApplicationService is
134
134
  )
135
135
  external
136
136
  virtual
137
+ nonReentrant()
137
138
  returns (NftId applicationNftId)
138
139
  {
140
+ _checkNftType(bundleNftId, BUNDLE());
141
+
139
142
  (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
140
143
 
141
144
  // check if provided references are valid and linked to calling product contract
@@ -208,9 +211,12 @@ contract ApplicationService is
208
211
  NftId bundleNftId // will likely need a newer bundle for underwriting
209
212
  )
210
213
  external
211
- virtual override
214
+ virtual
215
+ nonReentrant()
212
216
  returns (NftId applicationNftId)
213
217
  {
218
+ _checkNftType(policyNftId, POLICY());
219
+ _checkNftType(bundleNftId, BUNDLE());
214
220
  // TODO implement
215
221
  }
216
222
 
@@ -225,15 +231,21 @@ contract ApplicationService is
225
231
  bytes memory applicationData
226
232
  )
227
233
  external
228
- virtual override
234
+ virtual
235
+ nonReentrant()
229
236
  {
237
+ _checkNftType(applicationNftId, POLICY());
238
+ _checkNftType(bundleNftId, BUNDLE());
230
239
  // TODO implement
231
240
  }
232
241
 
233
242
  function revoke(NftId applicationNftId)
234
243
  external
235
- virtual override
244
+ virtual
245
+ nonReentrant()
236
246
  {
247
+ _checkNftType(applicationNftId, POLICY());
248
+
237
249
  (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
238
250
  instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());
239
251
  }
@@ -30,8 +30,8 @@ abstract contract BasicProduct is
30
30
  string memory name,
31
31
  address token,
32
32
  bool isInterceptor,
33
- address pool,
34
- address distribution
33
+ bool hasDistribution,
34
+ uint8 numberOfOracles
35
35
  )
36
36
  internal
37
37
  virtual
@@ -45,9 +45,9 @@ abstract contract BasicProduct is
45
45
  name,
46
46
  token,
47
47
  isInterceptor,
48
- pool,
49
- distribution,
50
- "", //registryData,
51
- ""); // componentData
48
+ false, // is processing funded claims
49
+ hasDistribution,
50
+ numberOfOracles,
51
+ ""); // component data
52
52
  }
53
53
  }
@@ -36,7 +36,6 @@ contract BasicProductAuthorization
36
36
  // authorize public role (open access to any account, only allows to lock target)
37
37
  functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
38
38
  _authorize(functions, BasicProduct.setFees.selector, "setFees");
39
-
40
39
  _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
41
40
  }
42
41
  }