@etherisc/gif-next 0.0.2-e5a6af8-639 → 0.0.2-e5bdc7a-061

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