@etherisc/gif-next 0.0.2-93a7619-595 → 0.0.2-93ee1cf-782

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 (417) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
  4. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  6. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -13
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +143 -182
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +77 -17
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +83 -98
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +175 -86
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +104 -60
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +73 -83
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -0
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +113 -196
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +114 -22
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +215 -235
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +81 -25
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  45. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +155 -157
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +114 -129
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +230 -190
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +508 -228
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  53. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +98 -30
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -88
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -42
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +168 -125
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +327 -84
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +113 -135
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -40
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +172 -111
  72. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  73. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  79. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  81. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  83. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  89. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +102 -141
  92. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +77 -17
  94. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +68 -78
  97. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  99. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +78 -93
  101. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +142 -79
  103. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +92 -36
  105. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +78 -121
  107. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  109. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +143 -214
  111. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  112. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +84 -84
  113. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  114. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +48 -57
  115. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +68 -117
  117. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  118. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +106 -88
  119. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/Pool.sol/Pool.json +78 -132
  121. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +195 -188
  123. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +87 -51
  125. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +114 -45
  127. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -36
  129. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  130. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +123 -94
  131. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  132. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +77 -17
  133. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +175 -88
  135. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  136. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +97 -61
  137. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +63 -7
  139. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +66 -0
  141. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +67 -19
  143. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  144. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
  145. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  146. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +109 -75
  147. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  148. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
  149. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +174 -129
  151. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +96 -56
  153. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingService.sol/PricingService.json +165 -107
  155. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +85 -45
  157. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  158. package/artifacts/contracts/product/Product.sol/Product.json +119 -90
  159. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  160. package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -26
  161. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -30
  163. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  164. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  165. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  166. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +72 -15
  167. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  168. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  169. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  170. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  171. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  172. package/artifacts/contracts/registry/Registry.sol/Registry.json +116 -51
  173. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  174. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +206 -165
  175. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  176. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +161 -61
  177. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -29
  179. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  181. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +123 -225
  183. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  184. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  185. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  186. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  187. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  188. package/artifacts/contracts/shared/Component.sol/Component.json +76 -87
  189. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +442 -180
  191. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +115 -63
  193. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  194. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
  195. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
  197. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  198. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  199. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  200. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  201. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -72
  203. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
  205. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +68 -78
  207. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  209. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  211. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  213. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  216. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  219. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  220. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  221. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +78 -93
  222. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  223. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  224. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  226. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  227. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  228. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  230. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  231. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  232. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
  234. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  235. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  236. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Service.sol/Service.json +42 -0
  238. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  239. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  240. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  241. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  242. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  243. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  244. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  245. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +84 -108
  246. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  247. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  248. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  249. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  250. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  251. package/artifacts/contracts/staking/Staking.sol/Staking.json +154 -187
  252. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  254. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -51
  256. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  258. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  259. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +82 -53
  260. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  261. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +69 -33
  262. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  263. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
  264. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  265. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  266. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  267. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  271. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  273. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  276. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  277. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  278. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  280. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  281. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  282. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  284. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  286. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  288. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  290. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +43 -5
  292. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  294. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  299. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  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 +1 -1
  306. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  307. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
  308. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  309. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  310. package/contracts/authorization/AccessAdmin.sol +86 -62
  311. package/contracts/authorization/Authorization.sol +106 -38
  312. package/contracts/authorization/IAccess.sol +1 -0
  313. package/contracts/authorization/IAccessAdmin.sol +4 -2
  314. package/contracts/authorization/IAuthorization.sol +13 -7
  315. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  316. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  317. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  318. package/contracts/distribution/BasicDistribution.sol +4 -3
  319. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  320. package/contracts/distribution/Distribution.sol +11 -22
  321. package/contracts/distribution/DistributionService.sol +69 -51
  322. package/contracts/distribution/IDistributionComponent.sol +1 -1
  323. package/contracts/distribution/IDistributionService.sol +5 -6
  324. package/contracts/examples/fire/FirePool.sol +19 -8
  325. package/contracts/examples/fire/FireProduct.sol +33 -13
  326. package/contracts/examples/fire/FireProductAuthorization.sol +1 -2
  327. package/contracts/examples/unpermissioned/SimpleDistribution.sol +12 -4
  328. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  329. package/contracts/examples/unpermissioned/SimplePool.sol +38 -6
  330. package/contracts/examples/unpermissioned/SimpleProduct.sol +17 -23
  331. package/contracts/instance/BundleSet.sol +38 -34
  332. package/contracts/instance/IInstance.sol +10 -1
  333. package/contracts/instance/IInstanceService.sol +7 -25
  334. package/contracts/instance/Instance.sol +34 -22
  335. package/contracts/instance/InstanceAdmin.sol +20 -30
  336. package/contracts/instance/InstanceAuthorizationV3.sol +38 -25
  337. package/contracts/instance/InstanceReader.sol +85 -1
  338. package/contracts/instance/InstanceService.sol +46 -87
  339. package/contracts/instance/RiskSet.sol +119 -0
  340. package/contracts/instance/base/ObjectLifecycle.sol +1 -1
  341. package/contracts/instance/base/ObjectSet.sol +24 -25
  342. package/contracts/instance/module/IComponents.sol +7 -5
  343. package/contracts/instance/module/IPolicy.sol +2 -1
  344. package/contracts/instance/module/IRisk.sol +1 -0
  345. package/contracts/oracle/BasicOracle.sol +0 -1
  346. package/contracts/oracle/IOracleService.sol +2 -1
  347. package/contracts/oracle/Oracle.sol +4 -15
  348. package/contracts/oracle/OracleService.sol +103 -75
  349. package/contracts/pool/BasicPool.sol +33 -24
  350. package/contracts/pool/BasicPoolAuthorization.sol +12 -2
  351. package/contracts/pool/BundleService.sol +60 -98
  352. package/contracts/pool/IBundleService.sol +2 -23
  353. package/contracts/pool/IPoolComponent.sol +1 -7
  354. package/contracts/pool/IPoolService.sol +12 -30
  355. package/contracts/pool/Pool.sol +118 -126
  356. package/contracts/pool/PoolService.sol +191 -142
  357. package/contracts/product/ApplicationService.sol +21 -13
  358. package/contracts/product/BasicProduct.sol +8 -12
  359. package/contracts/product/BasicProductAuthorization.sol +0 -1
  360. package/contracts/product/ClaimService.sol +113 -51
  361. package/contracts/product/IApplicationService.sol +5 -2
  362. package/contracts/product/IClaimService.sol +7 -0
  363. package/contracts/product/IPolicyService.sol +17 -7
  364. package/contracts/product/IPricingService.sol +9 -9
  365. package/contracts/product/IProductComponent.sol +6 -0
  366. package/contracts/product/PolicyService.sol +241 -194
  367. package/contracts/product/PricingService.sol +8 -8
  368. package/contracts/product/Product.sol +56 -61
  369. package/contracts/product/RiskService.sol +14 -3
  370. package/contracts/registry/ChainNft.sol +6 -9
  371. package/contracts/registry/IRegistry.sol +6 -3
  372. package/contracts/registry/IRegistryService.sol +6 -4
  373. package/contracts/registry/ITransferInterceptor.sol +1 -2
  374. package/contracts/registry/Registry.sol +22 -4
  375. package/contracts/registry/RegistryAdmin.sol +21 -34
  376. package/contracts/registry/RegistryService.sol +37 -55
  377. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  378. package/contracts/registry/ReleaseRegistry.sol +202 -208
  379. package/contracts/registry/ServiceAuthorizationV3.sol +17 -40
  380. package/contracts/shared/Component.sol +47 -106
  381. package/contracts/shared/ComponentService.sol +322 -157
  382. package/contracts/shared/ComponentVerifyingService.sol +27 -15
  383. package/contracts/shared/ContractLib.sol +196 -10
  384. package/contracts/shared/IComponent.sol +10 -16
  385. package/contracts/shared/IComponentService.sol +38 -16
  386. package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
  387. package/contracts/shared/ILifecycle.sol +3 -1
  388. package/contracts/shared/INftOwnable.sol +2 -0
  389. package/contracts/shared/IRegisterable.sol +11 -0
  390. package/contracts/shared/InstanceLinkedComponent.sol +66 -32
  391. package/contracts/shared/KeyValueStore.sol +1 -1
  392. package/contracts/shared/Lifecycle.sol +15 -4
  393. package/contracts/shared/NftOwnable.sol +23 -3
  394. package/contracts/shared/Registerable.sol +15 -7
  395. package/contracts/shared/RegistryLinked.sol +6 -12
  396. package/contracts/shared/Service.sol +4 -7
  397. package/contracts/shared/TokenHandler.sol +316 -66
  398. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  399. package/contracts/staking/IStaking.sol +9 -4
  400. package/contracts/staking/IStakingService.sol +0 -3
  401. package/contracts/staking/Staking.sol +31 -24
  402. package/contracts/staking/StakingService.sol +56 -23
  403. package/contracts/type/Key32.sol +2 -2
  404. package/contracts/type/Key32Set.sol +62 -0
  405. package/contracts/type/NftId.sol +6 -0
  406. package/contracts/type/ObjectType.sol +2 -0
  407. package/contracts/type/RiskId.sol +18 -6
  408. package/contracts/type/RoleId.sol +0 -12
  409. package/contracts/type/StateId.sol +14 -1
  410. package/contracts/upgradeability/ProxyManager.sol +2 -1
  411. package/package.json +3 -3
  412. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  413. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  414. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  415. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  416. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  417. package/contracts/authorization/ModuleAuthorization.sol +0 -78
@@ -6,39 +6,34 @@ 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";
11
- import {IProductComponent} from "../product/IProductComponent.sol";
10
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
12
11
  import {IPoolService} from "./IPoolService.sol";
12
+ import {IProductComponent} from "../product/IProductComponent.sol";
13
13
  import {IRegistry} from "../registry/IRegistry.sol";
14
- import {IRegistryService} from "../registry/IRegistryService.sol";
15
14
  import {IStaking} from "../staking/IStaking.sol";
16
15
 
17
16
  import {Amount, AmountLib} from "../type/Amount.sol";
18
17
  import {ClaimId} from "../type/ClaimId.sol";
18
+ import {ContractLib} from "../shared/ContractLib.sol";
19
19
  import {Fee, FeeLib} from "../type/Fee.sol";
20
20
  import {NftId} from "../type/NftId.sol";
21
- import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
22
- import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
21
+ import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
23
22
  import {Fee, FeeLib} from "../type/Fee.sol";
24
23
  import {KEEP_STATE} from "../type/StateId.sol";
25
- import {Seconds} from "../type/Seconds.sol";
26
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
27
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
24
+ import {UFixed} from "../type/UFixed.sol";
25
+ import {Service} from "../shared/Service.sol";
28
26
  import {InstanceReader} from "../instance/InstanceReader.sol";
29
27
  import {InstanceStore} from "../instance/InstanceStore.sol";
30
28
 
31
29
  string constant POOL_SERVICE_NAME = "PoolService";
32
30
 
33
31
  contract PoolService is
34
- ComponentVerifyingService,
32
+ Service,
35
33
  IPoolService
36
34
  {
37
35
  IBundleService internal _bundleService;
38
36
  IComponentService internal _componentService;
39
- IInstanceService private _instanceService;
40
- IRegistryService private _registryService;
41
-
42
37
  IStaking private _staking;
43
38
 
44
39
  function _initialize(
@@ -56,11 +51,8 @@ contract PoolService is
56
51
 
57
52
  _initializeService(registryAddress, authority, owner);
58
53
 
59
- _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
60
54
  _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
61
- _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
62
55
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
63
-
64
56
  _staking = IStaking(getRegistry().getStakingAddress());
65
57
 
66
58
  _registerInterface(type(IPoolService).interfaceId);
@@ -72,7 +64,7 @@ contract PoolService is
72
64
  external
73
65
  virtual
74
66
  {
75
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
67
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
76
68
  InstanceReader instanceReader = instance.getInstanceReader();
77
69
  IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
78
70
 
@@ -84,71 +76,13 @@ contract PoolService is
84
76
  }
85
77
 
86
78
 
87
- function setBundleOwnerRole(RoleId bundleOwnerRole)
88
- external
89
- virtual
90
- {
91
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
92
- InstanceReader instanceReader = instance.getInstanceReader();
93
-
94
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
95
- IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
96
-
97
- // bundle owner role may only be set once per pool
98
- if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
99
- revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
100
- }
101
-
102
- poolInfo.bundleOwnerRole = bundleOwnerRole;
103
- instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
104
-
105
- emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
106
- }
107
-
108
-
109
- /// @inheritdoc IPoolService
110
- function createBundle(
111
- address bundleOwner, // initial bundle owner
112
- Fee memory fee, // fees deducted from premium that go to bundle owner
113
- Seconds lifetime, // initial duration for which new policies are covered
114
- bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
115
- )
116
- external
117
- virtual
118
- returns(NftId bundleNftId)
119
- {
120
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
121
-
122
- // create the empty bundle
123
- bundleNftId = _bundleService.create(
124
- instance,
125
- poolNftId,
126
- bundleOwner,
127
- fee,
128
- AmountLib.zero(),
129
- lifetime,
130
- filter);
131
-
132
- emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
133
- }
134
-
135
-
136
- function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
137
- internal
138
- virtual
139
- view
140
- returns (Fee memory stakingFee)
141
- {
142
- NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
143
- return instanceReader.getProductInfo(productNftId).stakingFee;
144
- }
145
-
146
-
147
79
  function closeBundle(NftId bundleNftId)
148
80
  external
149
81
  virtual
150
82
  {
151
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
83
+ _checkNftType(bundleNftId, BUNDLE());
84
+
85
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
152
86
 
153
87
  // TODO get performance fee for pool (#477)
154
88
 
@@ -166,7 +100,7 @@ contract PoolService is
166
100
  if ((unstakedAmount + feeAmount).gtz()){
167
101
  IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
168
102
  poolComponentInfo.tokenHandler.distributeTokens(
169
- poolComponentInfo.wallet,
103
+ poolComponentInfo.tokenHandler.getWallet(),
170
104
  getRegistry().ownerOf(bundleNftId),
171
105
  unstakedAmount + feeAmount);
172
106
  }
@@ -182,9 +116,11 @@ contract PoolService is
182
116
  external
183
117
  virtual
184
118
  {
185
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
119
+ _checkNftType(policyNftId, POLICY());
120
+
121
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
186
122
  InstanceReader instanceReader = instance.getInstanceReader();
187
- NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
123
+ NftId productNftId = getRegistry().getObjectInfo(poolNftId).parentNftId;
188
124
 
189
125
  // check policy matches with calling pool
190
126
  IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
@@ -212,7 +148,9 @@ contract PoolService is
212
148
  // TODO: restricted() (once #462 is done)
213
149
  returns(Amount netAmount)
214
150
  {
215
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
151
+ _checkNftType(bundleNftId, BUNDLE());
152
+
153
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
216
154
  InstanceReader instanceReader = instance.getInstanceReader();
217
155
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
218
156
  IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
@@ -228,17 +166,22 @@ contract PoolService is
228
166
  }
229
167
  }
230
168
 
231
-
232
169
  // calculate fees
170
+ IRegistry registry = getRegistry();
233
171
  Amount feeAmount;
234
- (
235
- feeAmount,
236
- netAmount
237
- ) = FeeLib.calculateFee(
238
- _getStakingFee(instanceReader, poolNftId),
239
- amount);
240
172
 
241
- // do all the bookkeeping
173
+ {
174
+ NftId productNftId = registry.getObjectInfo(poolNftId).parentNftId;
175
+ Fee memory stakingFee = instanceReader.getProductInfo(productNftId).stakingFee;
176
+ (
177
+ feeAmount,
178
+ netAmount
179
+ ) = FeeLib.calculateFee(
180
+ stakingFee,
181
+ amount);
182
+ }
183
+
184
+ // do all the book keeping
242
185
  _componentService.increasePoolBalance(
243
186
  instance.getInstanceStore(),
244
187
  poolNftId,
@@ -247,18 +190,22 @@ contract PoolService is
247
190
 
248
191
  _bundleService.stake(instance, bundleNftId, netAmount);
249
192
 
250
- // collect tokens from bundle owner
251
- address bundleOwner = getRegistry().ownerOf(bundleNftId);
252
193
  emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
253
194
 
254
- // TODO only collect staking token when pool is not externally managed
255
- _collectStakingAmount(
256
- instanceReader,
257
- poolNftId,
258
- bundleOwner,
259
- amount);
195
+ // only collect staking amount when pool is not externally managed
196
+ if (!poolInfo.isExternallyManaged) {
197
+
198
+ // collect tokens from bundle owner
199
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
200
+ _collectStakingAmount(
201
+ instanceReader,
202
+ poolNftId,
203
+ bundleOwner,
204
+ amount);
205
+ }
260
206
  }
261
207
 
208
+
262
209
  /// @inheritdoc IPoolService
263
210
  function unstake(NftId bundleNftId, Amount amount)
264
211
  external
@@ -266,11 +213,13 @@ contract PoolService is
266
213
  // TODO: restricted() (once #462 is done)
267
214
  returns(Amount netAmount)
268
215
  {
269
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
216
+ _checkNftType(bundleNftId, BUNDLE());
217
+
218
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
270
219
  InstanceReader instanceReader = instance.getInstanceReader();
271
220
  InstanceStore instanceStore = instance.getInstanceStore();
272
221
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
273
-
222
+
274
223
  if (bundleInfo.poolNftId != poolNftId) {
275
224
  revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
276
225
  }
@@ -282,6 +231,7 @@ contract PoolService is
282
231
  // if amount was max, this was set to the available amount
283
232
 
284
233
  // TODO: handle performance fees (issue #477)
234
+ netAmount = unstakedAmount;
285
235
 
286
236
  // update pool bookkeeping - performance fees stay in the pool, but as fees
287
237
  _componentService.decreasePoolBalance(
@@ -290,38 +240,77 @@ contract PoolService is
290
240
  unstakedAmount,
291
241
  AmountLib.zero());
292
242
 
293
- IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
294
- address poolWallet = poolComponentInfo.wallet;
295
- // transfer amount to bundle owner
296
- address owner = getRegistry().ownerOf(bundleNftId);
297
- emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
298
- poolComponentInfo.tokenHandler.distributeTokens(
299
- poolWallet,
300
- owner,
301
- unstakedAmount);
302
- return unstakedAmount;
243
+
244
+ emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount, netAmount);
245
+
246
+ // only distribute staking amount when pool is not externally managed
247
+ if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
248
+
249
+ // transfer amount to bundle owner
250
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
251
+ _distributeUnstakingAmount(
252
+ instanceReader,
253
+ poolNftId,
254
+ bundleOwner,
255
+ netAmount);
256
+ }
303
257
  }
304
258
 
305
259
 
306
- function fundPoolWallet(NftId poolNftId, Amount amount)
260
+ function fundPoolWallet(Amount amount)
307
261
  external
308
262
  virtual
309
- restricted()
263
+ // restricted()
310
264
  {
311
- // TODO check that poolNftId is externally managed
312
- // TODO implement
265
+ (
266
+ NftId poolNftId,
267
+ IInstance instance
268
+ ) = _getAndVerifyActivePool();
269
+
270
+ // check that pool is externally managed
271
+ InstanceReader reader = instance.getInstanceReader();
272
+ if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
273
+ revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
274
+ }
275
+
276
+ address poolOwner = getRegistry().ownerOf(poolNftId);
277
+ emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
278
+
279
+ _collectStakingAmount(
280
+ reader,
281
+ poolNftId,
282
+ poolOwner,
283
+ amount);
313
284
  }
314
285
 
315
286
 
316
- function defundPoolWallet(NftId poolNftId, Amount amount)
287
+ function defundPoolWallet(Amount amount)
317
288
  external
318
289
  virtual
319
- restricted()
290
+ // restricted()
320
291
  {
321
- // TODO check that poolNftId is externally managed
322
- // TODO implement
292
+ (
293
+ NftId poolNftId,
294
+ IInstance instance
295
+ ) = _getAndVerifyActivePool();
296
+
297
+ // check that pool is externally managed
298
+ InstanceReader reader = instance.getInstanceReader();
299
+ if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
300
+ revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
301
+ }
302
+
303
+ address poolOwner = getRegistry().ownerOf(poolNftId);
304
+ emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
305
+
306
+ _distributeUnstakingAmount(
307
+ reader,
308
+ poolNftId,
309
+ poolOwner,
310
+ amount);
323
311
  }
324
312
 
313
+
325
314
  function processSale(
326
315
  NftId bundleNftId,
327
316
  IPolicy.PremiumInfo memory premium
@@ -330,11 +319,12 @@ contract PoolService is
330
319
  virtual
331
320
  restricted()
332
321
  {
322
+ _checkNftType(bundleNftId, BUNDLE());
323
+
333
324
  IRegistry registry = getRegistry();
334
- IRegistry.ObjectInfo memory bundleObjectInfo = registry.getObjectInfo(bundleNftId);
335
- IRegistry.ObjectInfo memory poolObjectInfo = registry.getObjectInfo(bundleObjectInfo.parentNftId);
336
- IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
337
- IInstance instance = IInstance(instanceObjectInfo.objectAddress);
325
+ NftId poolNftId = registry.getObjectInfo(bundleNftId).parentNftId;
326
+ (, address instanceAddress) = ContractLib.getInfoAndInstance(registry, poolNftId, true);
327
+ IInstance instance = IInstance(instanceAddress);
338
328
 
339
329
  Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
340
330
  Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
@@ -343,13 +333,13 @@ contract PoolService is
343
333
  InstanceStore instanceStore = instance.getInstanceStore();
344
334
  _componentService.increasePoolBalance(
345
335
  instanceStore,
346
- poolObjectInfo.nftId,
336
+ poolNftId,
347
337
  bundleNetAmount + bundleFeeAmount,
348
338
  poolFeeAmount);
349
339
 
350
340
  _componentService.increaseBundleBalance(
351
341
  instanceStore,
352
- bundleObjectInfo.nftId,
342
+ bundleNftId,
353
343
  bundleNetAmount,
354
344
  bundleFeeAmount);
355
345
  }
@@ -371,9 +361,17 @@ contract PoolService is
371
361
  Amount localCollateralAmount
372
362
  )
373
363
  {
364
+ _checkNftType(productNftId, PRODUCT());
365
+ _checkNftType(applicationNftId, POLICY());
366
+ _checkNftType(bundleNftId, BUNDLE());
367
+
368
+ NftId poolNftId;
369
+ bool poolIsVerifyingApplications;
374
370
  (
371
+ poolNftId,
375
372
  totalCollateralAmount,
376
- localCollateralAmount
373
+ localCollateralAmount,
374
+ poolIsVerifyingApplications
377
375
  ) = calculateRequiredCollateral(
378
376
  instance.getInstanceReader(),
379
377
  productNftId,
@@ -392,11 +390,20 @@ contract PoolService is
392
390
  token,
393
391
  totalCollateralAmount);
394
392
 
395
- // hierarhical riskpool setup
396
- // TODO loop in with pool component to guarantee availability of external capital
397
- if(totalCollateralAmount > localCollateralAmount) {
393
+ // pool callback when required
394
+ if (poolIsVerifyingApplications) {
395
+ IPoolComponent pool = IPoolComponent(
396
+ getRegistry().getObjectAddress(poolNftId));
398
397
 
398
+ pool.verifyApplication(
399
+ applicationNftId,
400
+ bundleNftId,
401
+ totalCollateralAmount);
402
+
403
+ // TODO add logging
399
404
  }
405
+
406
+ // TODO add logging
400
407
  }
401
408
 
402
409
  function processPayout(
@@ -410,6 +417,8 @@ contract PoolService is
410
417
  virtual
411
418
  restricted()
412
419
  {
420
+ _checkNftType(policyNftId, POLICY());
421
+
413
422
  NftId bundleNftId = policyInfo.bundleNftId;
414
423
  NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
415
424
  InstanceStore instanceStore = instance.getInstanceStore();
@@ -452,6 +461,8 @@ contract PoolService is
452
461
  virtual
453
462
  restricted()
454
463
  {
464
+ _checkNftType(policyNftId, POLICY());
465
+
455
466
  Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
456
467
 
457
468
  _bundleService.releaseCollateral(
@@ -460,10 +471,6 @@ contract PoolService is
460
471
  policyInfo.bundleNftId,
461
472
  remainingCollateralAmount);
462
473
 
463
- _bundleService.unlinkPolicy(
464
- instance,
465
- policyNftId);
466
-
467
474
  // update value locked with staking service
468
475
  _staking.decreaseTotalValueLocked(
469
476
  instance.getNftId(),
@@ -480,12 +487,17 @@ contract PoolService is
480
487
  public
481
488
  view
482
489
  returns(
490
+ NftId poolNftId,
483
491
  Amount totalCollateralAmount,
484
- Amount localCollateralAmount
492
+ Amount localCollateralAmount,
493
+ bool poolIsVerifyingApplications
485
494
  )
486
495
  {
487
- NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
496
+ _checkNftType(productNftId, PRODUCT());
497
+
498
+ poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
488
499
  IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
500
+ poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
489
501
 
490
502
  (
491
503
  totalCollateralAmount,
@@ -524,6 +536,7 @@ contract PoolService is
524
536
  Amount stakingAmount
525
537
  )
526
538
  internal
539
+ pure
527
540
  returns (Amount stakingNetAmount)
528
541
  {
529
542
  stakingNetAmount = stakingAmount;
@@ -538,25 +551,61 @@ contract PoolService is
538
551
  }
539
552
 
540
553
 
541
- /// @dev transfers the specified amount from the bundle owner to the pool's wallet
554
+ /// @dev transfers the specified amount from the "from account" to the pool's wallet
542
555
  function _collectStakingAmount(
543
- InstanceReader instanceReader,
556
+ InstanceReader reader,
544
557
  NftId poolNftId,
545
- address bundleOwner,
558
+ address from,
546
559
  Amount amount
547
560
  )
548
561
  internal
549
562
  {
563
+ IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
564
+ info.tokenHandler.collectTokens(
565
+ from,
566
+ amount);
567
+ }
550
568
 
551
- // collecting investor token
552
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
553
- address poolWallet = componentInfo.wallet;
554
- componentInfo.tokenHandler.collectTokens(
555
- bundleOwner,
556
- poolWallet,
569
+ /// @dev distributes the specified amount from the pool's wallet to the "to account"
570
+ function _distributeUnstakingAmount(
571
+ InstanceReader reader,
572
+ NftId poolNftId,
573
+ address to,
574
+ Amount amount
575
+ )
576
+ internal
577
+ {
578
+ IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
579
+ info.tokenHandler.distributeTokens(
580
+ info.tokenHandler.getWallet(),
581
+ to,
557
582
  amount);
558
583
  }
559
584
 
585
+
586
+ function _getAndVerifyActivePool()
587
+ internal
588
+ virtual
589
+ view
590
+ returns (
591
+ NftId poolNftId,
592
+ IInstance instance
593
+ )
594
+ {
595
+ (
596
+ IRegistry.ObjectInfo memory info,
597
+ address instanceAddress
598
+ ) = ContractLib.getAndVerifyComponent(
599
+ getRegistry(),
600
+ msg.sender,
601
+ POOL(),
602
+ true); // only active pools
603
+
604
+ poolNftId = info.nftId;
605
+ instance = IInstance(instanceAddress);
606
+ }
607
+
608
+
560
609
  function _getDomain() internal pure override returns(ObjectType) {
561
610
  return POOL();
562
611
  }
@@ -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";
@@ -55,10 +55,10 @@ contract ApplicationService is
55
55
  }
56
56
 
57
57
 
58
- function _checkLinkedpplicationParameters(
58
+ function _checkLinkedApplicationParameters(
59
59
  InstanceReader instanceReader,
60
60
  NftId productNftId,
61
- RiskId rirskId,
61
+ RiskId riskId,
62
62
  ReferralId referralId,
63
63
  NftId bundleNftId
64
64
  )
@@ -66,18 +66,18 @@ contract ApplicationService is
66
66
  virtual
67
67
  view
68
68
  {
69
- IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
69
+ // check risk with product
70
+ (bool exists, bool active) = instanceReader.getRiskSet().checkRisk(productNftId, riskId);
71
+ if (!exists) { revert ErrorApplicationServiceRiskUnknown(riskId, productNftId); }
72
+ if (!active) { revert ErrorApplicationServiceRiskPaused(riskId, productNftId); }
70
73
 
71
- // TODO check riskId with product
74
+ // check bundle with pool
75
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
76
+ (exists, active) = instanceReader.getBundleSet().checkBundle(poolNftId, bundleNftId);
77
+ if (!exists) { revert ErrorApplicationServiceBundleUnknown(bundleNftId, poolNftId); }
78
+ if (!active) { revert ErrorApplicationServiceBundleLocked(bundleNftId, poolNftId); }
72
79
 
73
80
  // TODO check referral with distribution
74
-
75
- // check bundle with pool
76
- NftId productPoolNftId = productInfo.poolNftId;
77
- NftId bundlePoolNftId = instanceReader.getBundleInfo(bundleNftId).poolNftId;
78
- if(bundlePoolNftId != productPoolNftId) {
79
- revert ErrorApplicationServiceBundlePoolMismatch(bundleNftId, productPoolNftId, bundlePoolNftId);
80
- }
81
81
  }
82
82
 
83
83
 
@@ -137,11 +137,13 @@ contract ApplicationService is
137
137
  nonReentrant()
138
138
  returns (NftId applicationNftId)
139
139
  {
140
+ _checkNftType(bundleNftId, BUNDLE());
141
+
140
142
  (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
141
143
 
142
144
  // check if provided references are valid and linked to calling product contract
143
145
  InstanceReader instanceReader = instance.getInstanceReader();
144
- _checkLinkedpplicationParameters(
146
+ _checkLinkedApplicationParameters(
145
147
  instanceReader,
146
148
  productNftId,
147
149
  riskId,
@@ -213,6 +215,8 @@ contract ApplicationService is
213
215
  nonReentrant()
214
216
  returns (NftId applicationNftId)
215
217
  {
218
+ _checkNftType(policyNftId, POLICY());
219
+ _checkNftType(bundleNftId, BUNDLE());
216
220
  // TODO implement
217
221
  }
218
222
 
@@ -230,6 +234,8 @@ contract ApplicationService is
230
234
  virtual
231
235
  nonReentrant()
232
236
  {
237
+ _checkNftType(applicationNftId, POLICY());
238
+ _checkNftType(bundleNftId, BUNDLE());
233
239
  // TODO implement
234
240
  }
235
241
 
@@ -238,6 +244,8 @@ contract ApplicationService is
238
244
  virtual
239
245
  nonReentrant()
240
246
  {
247
+ _checkNftType(applicationNftId, POLICY());
248
+
241
249
  (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
242
250
  instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());
243
251
  }
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Fee} from "../type/Fee.sol";
5
5
  import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+ import {IComponents} from "../instance/module/IComponents.sol";
6
7
  import {NftId} from "../type/NftId.sol";
7
8
  import {Product} from "../product/Product.sol";
8
9
 
@@ -25,13 +26,11 @@ abstract contract BasicProduct is
25
26
  function _initializeBasicProduct(
26
27
  address registry,
27
28
  NftId instanceNftId,
28
- IAuthorization authorization,
29
- address initialOwner,
30
29
  string memory name,
31
30
  address token,
32
- bool isInterceptor,
33
- address pool,
34
- address distribution
31
+ IComponents.ProductInfo memory productInfo,
32
+ IAuthorization authorization,
33
+ address initialOwner
35
34
  )
36
35
  internal
37
36
  virtual
@@ -40,14 +39,11 @@ abstract contract BasicProduct is
40
39
  _initializeProduct(
41
40
  registry,
42
41
  instanceNftId,
43
- authorization,
44
- initialOwner,
45
42
  name,
46
43
  token,
47
- isInterceptor,
48
- pool,
49
- distribution,
50
- "", //registryData,
51
- ""); // componentData
44
+ productInfo,
45
+ authorization,
46
+ initialOwner,
47
+ ""); // component data
52
48
  }
53
49
  }