@etherisc/gif-next 0.0.2-abde86b-349 → 0.0.2-ac4bee9-682

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 (408) hide show
  1. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
  3. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  4. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  6. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -13
  9. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  13. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +139 -157
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +77 -17
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +102 -96
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +152 -86
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +104 -60
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +92 -81
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -0
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +151 -132
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +133 -127
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +249 -188
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +530 -229
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  55. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +31 -86
  57. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  58. package/artifacts/contracts/instance/Instance.sol/Instance.json +78 -40
  59. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +148 -118
  61. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +113 -135
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +91 -133
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -40
  69. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +172 -111
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  73. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +121 -139
  89. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +77 -17
  91. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +87 -76
  94. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  96. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +97 -91
  98. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +102 -47
  100. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +72 -36
  102. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +97 -119
  104. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  106. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +205 -103
  108. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +108 -60
  110. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +72 -15
  112. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +87 -115
  114. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +213 -195
  116. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/Pool.sol/Pool.json +97 -130
  118. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +294 -255
  120. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +83 -47
  122. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +82 -32
  124. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +69 -33
  126. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +142 -92
  128. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +77 -17
  130. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +175 -82
  132. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +102 -58
  134. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
  136. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +56 -0
  138. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -1
  140. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
  142. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +128 -73
  144. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
  146. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +154 -61
  148. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +87 -47
  150. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.json +165 -107
  152. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +85 -45
  154. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  155. package/artifacts/contracts/product/Product.sol/Product.json +138 -88
  156. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -26
  158. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -30
  160. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  162. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +72 -15
  164. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  166. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  168. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/Registry.sol/Registry.json +116 -51
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +206 -165
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +161 -61
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -29
  176. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  178. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +123 -225
  180. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  182. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  184. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  185. package/artifacts/contracts/shared/Component.sol/Component.json +76 -66
  186. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +425 -155
  188. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +103 -63
  190. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
  192. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +21 -2
  194. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -51
  196. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +87 -76
  200. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  202. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  203. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  204. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  206. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  209. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  212. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  214. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +97 -91
  215. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  216. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  217. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  219. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  220. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  221. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  222. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  223. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  224. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  225. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
  227. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  228. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  229. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  230. package/artifacts/contracts/shared/Service.sol/Service.json +42 -0
  231. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  232. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  233. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  234. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  235. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  236. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  237. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  238. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +84 -87
  239. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  240. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  241. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  243. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  244. package/artifacts/contracts/staking/Staking.sol/Staking.json +154 -166
  245. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  247. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -51
  249. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  251. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +82 -53
  253. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +69 -33
  255. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
  257. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  258. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  259. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  260. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  262. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  265. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  267. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  269. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  271. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  273. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  274. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  275. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  277. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  279. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  281. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  283. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  285. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  287. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  292. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  298. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  299. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
  301. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  302. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  303. package/contracts/authorization/AccessAdmin.sol +65 -61
  304. package/contracts/authorization/Authorization.sol +106 -38
  305. package/contracts/authorization/IAccess.sol +1 -0
  306. package/contracts/authorization/IAccessAdmin.sol +4 -2
  307. package/contracts/authorization/IAuthorization.sol +13 -7
  308. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  309. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  310. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  311. package/contracts/distribution/BasicDistribution.sol +2 -1
  312. package/contracts/distribution/Distribution.sol +6 -16
  313. package/contracts/distribution/DistributionService.sol +55 -36
  314. package/contracts/distribution/IDistributionComponent.sol +1 -1
  315. package/contracts/examples/fire/DamageLevel.sol +59 -0
  316. package/contracts/examples/fire/FirePool.sol +86 -0
  317. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  318. package/contracts/examples/fire/FireProduct.sol +431 -0
  319. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  320. package/contracts/examples/fire/FireUSD.sol +26 -0
  321. package/contracts/examples/unpermissioned/SimpleDistribution.sol +12 -4
  322. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  323. package/contracts/examples/unpermissioned/SimplePool.sol +38 -6
  324. package/contracts/examples/unpermissioned/SimpleProduct.sol +17 -23
  325. package/contracts/instance/IInstance.sol +4 -1
  326. package/contracts/instance/IInstanceService.sol +2 -23
  327. package/contracts/instance/Instance.sol +20 -17
  328. package/contracts/instance/InstanceAdmin.sol +17 -28
  329. package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
  330. package/contracts/instance/InstanceReader.sol +10 -34
  331. package/contracts/instance/InstanceService.sol +29 -80
  332. package/contracts/instance/module/IComponents.sol +7 -5
  333. package/contracts/instance/module/IPolicy.sol +2 -1
  334. package/contracts/oracle/BasicOracle.sol +0 -1
  335. package/contracts/oracle/IOracleService.sol +2 -1
  336. package/contracts/oracle/Oracle.sol +4 -15
  337. package/contracts/oracle/OracleService.sol +47 -36
  338. package/contracts/pool/BasicPool.sol +33 -24
  339. package/contracts/pool/BasicPoolAuthorization.sol +12 -2
  340. package/contracts/pool/BundleService.sol +88 -41
  341. package/contracts/pool/IBundleService.sol +11 -5
  342. package/contracts/pool/IPoolComponent.sol +1 -7
  343. package/contracts/pool/IPoolService.sol +25 -24
  344. package/contracts/pool/Pool.sol +118 -126
  345. package/contracts/pool/PoolService.sol +203 -131
  346. package/contracts/product/ApplicationService.sol +9 -1
  347. package/contracts/product/BasicProduct.sol +8 -12
  348. package/contracts/product/BasicProductAuthorization.sol +0 -1
  349. package/contracts/product/ClaimService.sol +99 -58
  350. package/contracts/product/IClaimService.sol +2 -1
  351. package/contracts/product/IPolicyService.sol +6 -1
  352. package/contracts/product/IPricingService.sol +9 -9
  353. package/contracts/product/IProductComponent.sol +6 -0
  354. package/contracts/product/PolicyService.sol +76 -27
  355. package/contracts/product/PricingService.sol +8 -8
  356. package/contracts/product/Product.sol +56 -56
  357. package/contracts/registry/ChainNft.sol +6 -9
  358. package/contracts/registry/IRegistry.sol +6 -3
  359. package/contracts/registry/IRegistryService.sol +6 -4
  360. package/contracts/registry/ITransferInterceptor.sol +1 -2
  361. package/contracts/registry/Registry.sol +22 -4
  362. package/contracts/registry/RegistryAdmin.sol +29 -31
  363. package/contracts/registry/RegistryService.sol +37 -55
  364. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  365. package/contracts/registry/ReleaseRegistry.sol +202 -208
  366. package/contracts/registry/ServiceAuthorizationV3.sol +24 -20
  367. package/contracts/shared/Component.sol +58 -97
  368. package/contracts/shared/ComponentService.sol +285 -147
  369. package/contracts/shared/ComponentVerifyingService.sol +27 -15
  370. package/contracts/shared/ContractLib.sol +17 -1
  371. package/contracts/shared/IComponent.sol +10 -13
  372. package/contracts/shared/IComponentService.sol +38 -16
  373. package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
  374. package/contracts/shared/ILifecycle.sol +3 -1
  375. package/contracts/shared/INftOwnable.sol +2 -0
  376. package/contracts/shared/IRegisterable.sol +11 -0
  377. package/contracts/shared/InstanceLinkedComponent.sol +66 -32
  378. package/contracts/shared/KeyValueStore.sol +1 -1
  379. package/contracts/shared/Lifecycle.sol +15 -4
  380. package/contracts/shared/NftOwnable.sol +23 -3
  381. package/contracts/shared/Registerable.sol +15 -7
  382. package/contracts/shared/RegistryLinked.sol +6 -12
  383. package/contracts/shared/Service.sol +4 -7
  384. package/contracts/shared/TokenHandler.sol +324 -66
  385. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  386. package/contracts/staking/IStaking.sol +9 -4
  387. package/contracts/staking/IStakingService.sol +0 -3
  388. package/contracts/staking/Staking.sol +31 -24
  389. package/contracts/staking/StakingReader.sol +12 -5
  390. package/contracts/staking/StakingService.sol +69 -23
  391. package/contracts/type/Amount.sol +15 -0
  392. package/contracts/type/ClaimId.sol +6 -1
  393. package/contracts/type/NftId.sol +1 -0
  394. package/contracts/type/ObjectType.sol +1 -0
  395. package/contracts/type/RiskId.sol +16 -2
  396. package/contracts/type/RoleId.sol +0 -12
  397. package/contracts/type/StateId.sol +14 -1
  398. package/contracts/upgradeability/ProxyManager.sol +2 -1
  399. package/package.json +4 -3
  400. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  401. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  402. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  403. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  404. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  405. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  406. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  407. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  408. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -17,7 +17,7 @@ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol
17
17
  import {Fee} from "../type/Fee.sol";
18
18
  import {InstanceReader} from "../instance/InstanceReader.sol";
19
19
  import {NftId, NftIdLib} from "../type/NftId.sol";
20
- import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
20
+ import {ObjectType, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
21
21
  import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
22
22
  import {Seconds} from "../type/Seconds.sol";
23
23
  import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
@@ -63,7 +63,10 @@ contract BundleService is
63
63
  )
64
64
  external
65
65
  virtual
66
+ restricted()
66
67
  {
68
+ _checkNftType(bundleNftId, BUNDLE());
69
+
67
70
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
68
71
  InstanceReader instanceReader = instance.getInstanceReader();
69
72
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
@@ -81,19 +84,18 @@ contract BundleService is
81
84
 
82
85
 
83
86
  function create(
84
- IInstance instance,
85
- NftId poolNftId,
86
87
  address owner,
87
88
  Fee memory bundleFee,
88
- Amount stakingAmount,
89
89
  Seconds lifetime,
90
90
  bytes calldata filter
91
91
  )
92
92
  external
93
- override
94
- restricted
93
+ virtual
94
+ restricted()
95
95
  returns(NftId bundleNftId)
96
96
  {
97
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
98
+
97
99
  // register bundle with registry
98
100
  bundleNftId = _registryService.registerBundle(
99
101
  IRegistry.ObjectInfo(
@@ -121,19 +123,11 @@ contract BundleService is
121
123
  })
122
124
  );
123
125
 
124
- if (stakingAmount.gtz()) {
125
- // bundle book keeping
126
- _componentService.increaseBundleBalance(
127
- instanceStore,
128
- bundleNftId,
129
- stakingAmount,
130
- AmountLib.zero()); // fee amount
131
- }
132
-
133
126
  // put bundle under bundle managemet
134
127
  BundleSet bundleManager = instance.getBundleSet();
135
128
  bundleManager.add(bundleNftId);
136
- // TODO add logging
129
+
130
+ emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
137
131
  }
138
132
 
139
133
 
@@ -148,26 +142,35 @@ contract BundleService is
148
142
  virtual
149
143
  restricted()
150
144
  {
145
+ _checkNftType(policyNftId, POLICY());
146
+ _checkNftType(bundleNftId, BUNDLE());
147
+
151
148
  InstanceReader instanceReader = instance.getInstanceReader();
152
- StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
153
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
154
149
 
155
- // ensure bundle is active and not yet expired
156
- if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
157
- revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
150
+ {
151
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
152
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
153
+
154
+ // ensure bundle is active and not yet expired
155
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
156
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
157
+ }
158
158
  }
159
159
 
160
- // ensure bundle capacity is sufficent to collateralize policy
161
160
  InstanceStore instanceStore = instance.getInstanceStore();
162
- (
163
- Amount balanceAmount,
164
- Amount lockedAmount,
165
- Amount feeAmount
166
- ) = instanceStore.getAmounts(bundleNftId);
167
161
 
168
- Amount capacity = balanceAmount - (lockedAmount + feeAmount);
169
- if(capacity < collateralAmount) {
170
- revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
162
+ {
163
+ // ensure bundle capacity is sufficent to collateralize policy
164
+ (
165
+ Amount balanceAmount,
166
+ Amount lockedAmount,
167
+ Amount feeAmount
168
+ ) = instanceStore.getAmounts(bundleNftId);
169
+
170
+ Amount capacity = balanceAmount - (lockedAmount + feeAmount);
171
+ if(capacity < collateralAmount) {
172
+ revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
173
+ }
171
174
  }
172
175
 
173
176
  // updated locked amount
@@ -181,7 +184,10 @@ contract BundleService is
181
184
  function lock(NftId bundleNftId)
182
185
  external
183
186
  virtual
187
+ restricted()
184
188
  {
189
+ _checkNftType(bundleNftId, BUNDLE());
190
+
185
191
  (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
186
192
 
187
193
  // udpate bundle state
@@ -198,7 +204,10 @@ contract BundleService is
198
204
  function unlock(NftId bundleNftId)
199
205
  external
200
206
  virtual
207
+ restricted()
201
208
  {
209
+ _checkNftType(bundleNftId, BUNDLE());
210
+
202
211
  (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
203
212
 
204
213
  // udpate bundle state
@@ -218,9 +227,11 @@ contract BundleService is
218
227
  )
219
228
  external
220
229
  virtual
221
- restricted
230
+ restricted()
222
231
  returns (Amount unstakedAmount, Amount feeAmount)
223
232
  {
233
+ _checkNftType(bundleNftId, BUNDLE());
234
+
224
235
  InstanceReader instanceReader = instance.getInstanceReader();
225
236
 
226
237
  // ensure no open policies attached to bundle
@@ -252,8 +263,10 @@ contract BundleService is
252
263
  )
253
264
  external
254
265
  virtual
255
- // TODO: restricted() (once #462 is done)
266
+ restricted()
256
267
  {
268
+ _checkNftType(bundleNftId, BUNDLE());
269
+
257
270
  IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
258
271
  StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
259
272
 
@@ -278,9 +291,11 @@ contract BundleService is
278
291
  )
279
292
  external
280
293
  virtual
281
- // TODO: restricted() (once #462 is done)
294
+ restricted()
282
295
  returns (Amount unstakedAmount)
283
296
  {
297
+ _checkNftType(bundleNftId, BUNDLE());
298
+
284
299
  InstanceStore instanceStore = instance.getInstanceStore();
285
300
  (
286
301
  Amount balanceAmount,
@@ -288,7 +303,7 @@ contract BundleService is
288
303
  Amount feeAmount
289
304
  ) = instanceStore.getAmounts(bundleNftId);
290
305
 
291
- Amount unstakedAmount = amount;
306
+ unstakedAmount = amount;
292
307
  Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
293
308
 
294
309
  // if amount is max, then unstake all available
@@ -306,17 +321,17 @@ contract BundleService is
306
321
  bundleNftId,
307
322
  unstakedAmount,
308
323
  AmountLib.zero());
309
-
310
- return unstakedAmount;
311
324
  }
312
325
 
313
326
  /// @inheritdoc IBundleService
314
327
  function extend(NftId bundleNftId, Seconds lifetimeExtension)
315
328
  external
316
329
  virtual
317
- // TODO: restricted() (once #462 is done)
330
+ restricted()
318
331
  returns (Timestamp extendedExpiredAt)
319
332
  {
333
+ _checkNftType(bundleNftId, BUNDLE());
334
+
320
335
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
321
336
  IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
322
337
  StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
@@ -354,6 +369,9 @@ contract BundleService is
354
369
  virtual
355
370
  restricted()
356
371
  {
372
+ _checkNftType(policyNftId, POLICY());
373
+ _checkNftType(bundleNftId, BUNDLE());
374
+
357
375
  instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
358
376
  }
359
377
 
@@ -366,8 +384,10 @@ contract BundleService is
366
384
  virtual
367
385
  restricted
368
386
  {
387
+ _checkNftType(policyNftId, POLICY());
388
+
369
389
  // ensure policy is closeable
370
- if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
390
+ if (!policyIsCloseable(instance, policyNftId)) {
371
391
  revert ErrorBundleServicePolicyNotCloseable(policyNftId);
372
392
  }
373
393
 
@@ -378,16 +398,18 @@ contract BundleService is
378
398
  function withdrawBundleFees(NftId bundleNftId, Amount amount)
379
399
  public
380
400
  virtual
381
- // TODO: restricted() (once #462 is done)
401
+ restricted()
382
402
  returns (Amount withdrawnAmount)
383
403
  {
404
+ _checkNftType(bundleNftId, BUNDLE());
405
+
384
406
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
385
407
  InstanceReader reader = instance.getInstanceReader();
386
408
 
387
409
  IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
388
- address poolWallet = poolInfo.wallet;
410
+ address poolWallet = poolInfo.tokenHandler.getWallet();
389
411
 
390
- IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
412
+ // IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
391
413
 
392
414
  // determine withdrawn amount
393
415
  withdrawnAmount = amount;
@@ -416,6 +438,31 @@ contract BundleService is
416
438
  }
417
439
  }
418
440
 
441
+ /// @inheritdoc IBundleService
442
+ function policyIsCloseable(IInstance instance, NftId policyNftId)
443
+ public
444
+ view
445
+ returns (bool isCloseable)
446
+ {
447
+ _checkNftType(policyNftId, POLICY());
448
+
449
+ IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
450
+
451
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
452
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
453
+ if (info.closedAt.gtz()) { return false; } // not closeable: already closed
454
+ if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
455
+
456
+ // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
457
+ if (info.claimAmount == info.sumInsuredAmount) { return true; }
458
+
459
+ // not closeable: not yet expired
460
+ if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
461
+
462
+ // all conditionsl to close the policy are met
463
+ return true;
464
+ }
465
+
419
466
  /// @dev links policy to bundle
420
467
  function _linkPolicy(IInstance instance, NftId policyNftId)
421
468
  internal
@@ -13,6 +13,7 @@ import {Timestamp} from "../type/Timestamp.sol";
13
13
 
14
14
  interface IBundleService is IService {
15
15
 
16
+ event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId);
16
17
  event LogBundleServiceBundleActivated(NftId bundleNftId);
17
18
  event LogBundleServiceBundleLocked(NftId bundleNftId);
18
19
 
@@ -35,14 +36,10 @@ interface IBundleService is IService {
35
36
  event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
36
37
  event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
37
38
 
38
- /// @dev create a new bundle for the specified attributes
39
- /// may only be called by pool service
39
+ /// @dev Create a new bundle for the specified attributes.
40
40
  function create(
41
- IInstance instance, // instance relevant for bundle
42
- NftId poolNftId, // the pool the bundle will be linked to
43
41
  address owner, // initial bundle owner
44
42
  Fee memory fee, // fees deducted from premium that go to bundle owner
45
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
46
43
  Seconds lifetime, // initial duration for which new policies are covered
47
44
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
48
45
  )
@@ -131,4 +128,13 @@ interface IBundleService is IService {
131
128
  /// @return withdrawnAmount the effective withdrawn amount
132
129
  function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
133
130
 
131
+ /// @dev returns true iff policy may be closed
132
+ /// a policy can be closed all conditions below are met
133
+ /// - policy exists
134
+ /// - has been activated
135
+ /// - is not yet closed
136
+ /// - has no open claims
137
+ /// - claim amount matches sum insured amount or is expired
138
+ function policyIsCloseable(IInstance instance, NftId policyNftId) external view returns (bool isCloseable);
139
+
134
140
  }
@@ -27,9 +27,7 @@ interface IPoolComponent is IInstanceLinkedComponent {
27
27
  /// The default implementation is empty.
28
28
  function verifyApplication(
29
29
  NftId applicationNftId,
30
- bytes memory applicationData,
31
30
  NftId bundleNftId,
32
- bytes memory bundleFilter,
33
31
  Amount collateralizationAmount
34
32
  ) external;
35
33
 
@@ -47,6 +45,7 @@ interface IPoolComponent is IInstanceLinkedComponent {
47
45
  view
48
46
  returns (bool isMatching);
49
47
 
48
+
50
49
  /// @dev This is a callback function that is called by the claim service when a claim is confirmed.
51
50
  /// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
52
51
  /// The default implementation is empty.
@@ -56,11 +55,6 @@ interface IPoolComponent is IInstanceLinkedComponent {
56
55
  Amount amount
57
56
  ) external;
58
57
 
59
- /// @dev Withdraw bundle feeds for the given bundle
60
- /// @param bundleNftId the bundle Nft Id
61
- /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
62
- /// @return withdrawnAmount the effective withdrawn amount
63
- function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
64
58
 
65
59
  /// @dev Returns initial pool specific infos for this pool
66
60
  function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
@@ -19,25 +19,23 @@ import {UFixed} from "../type/UFixed.sol";
19
19
  interface IPoolService is IService {
20
20
 
21
21
  event LogPoolServiceMaxBalanceAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
22
- event LogPoolServiceBundleOwnerRoleSet(NftId poolNftId, RoleId bundleOwnerRole);
22
+ event LogPoolServiceWalletFunded(NftId poolNftId, address poolOwner, Amount amount);
23
+ event LogPoolServiceWalletDefunded(NftId poolNftId, address poolOwner, Amount amount);
23
24
 
24
25
  event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
25
26
  event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
26
27
 
27
28
  event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
28
- event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount);
29
+ event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
29
30
 
30
31
  event LogPoolServiceProcessFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount);
31
32
 
33
+ error ErrorPoolServicePoolNotExternallyManaged(NftId poolNftId);
32
34
  error ErrorPoolServicePolicyPoolMismatch(NftId policyNftId, NftId productNftId, NftId expectedProductNftId);
33
35
  error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
34
36
  error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
35
37
  error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
36
38
  error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
37
-
38
- /// @dev defines the required role for bundle owners for the calling pool
39
- /// default implementation returns PUBLIC ROLE
40
- function setBundleOwnerRole(RoleId bundleOwnerRole) external;
41
39
 
42
40
  /// @dev sets the max balance amount for the calling pool
43
41
  function setMaxBalanceAmount(Amount maxBalanceAmount) external;
@@ -72,10 +70,10 @@ interface IPoolService is IService {
72
70
  ) external;
73
71
 
74
72
 
75
- /// @dev reduces the locked collateral in the bundle associated with the specified policy
73
+ /// @dev reduces the locked collateral in the bundle associated with the specified policy and updates pool/bundle counters
76
74
  /// every payout of a policy reduces the collateral by the payout amount
77
75
  /// may only be called by the claim service for unlocked pool components
78
- function reduceCollateral(
76
+ function processPayout(
79
77
  IInstance instance,
80
78
  address token,
81
79
  NftId policyNftId,
@@ -84,16 +82,17 @@ interface IPoolService is IService {
84
82
  ) external;
85
83
 
86
84
 
87
- /// @dev create a new empty bundle with the provided parameters
88
- /// may only be called by registered and unlocked pool components.
89
- function createBundle(
90
- address owner, // initial bundle owner
91
- Fee memory fee, // fees deducted from premium that go to bundle owner
92
- Seconds lifetime, // initial duration for which new policies are covered
93
- bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
94
- )
95
- external
96
- returns(NftId bundleNftId); // the nft id of the newly created bundle
85
+ // TODO cleanup
86
+ // /// @dev create a new empty bundle with the provided parameters
87
+ // /// may only be called by registered and unlocked pool components.
88
+ // function createBundle(
89
+ // address owner, // initial bundle owner
90
+ // Fee memory fee, // fees deducted from premium that go to bundle owner
91
+ // Seconds lifetime, // initial duration for which new policies are covered
92
+ // bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
93
+ // )
94
+ // external
95
+ // returns(NftId bundleNftId); // the nft id of the newly created bundle
97
96
 
98
97
 
99
98
  /// @dev increase stakes for bundle
@@ -121,18 +120,18 @@ interface IPoolService is IService {
121
120
  function processFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount) external;
122
121
 
123
122
 
124
- /// @dev Fund the specified pool wallet with the provided amount.
125
- /// This function will collect the amount from the sender address and transfers it to the pool wallet.
123
+ /// @dev Fund the pool wallet with the provided amount.
124
+ /// This function will collect the amount from the pool owner and transfers it to the pool wallet.
126
125
  /// The function will not update balance amounts managed by the framework.
127
126
  /// Only available for externally managed pools.
128
- function fundPoolWallet(NftId poolNftId, Amount amount) external;
127
+ function fundPoolWallet(Amount amount) external;
129
128
 
130
129
 
131
130
  /// @dev Defund the specified pool wallet with the provided amount.
132
- /// This function will transfer the amount from the pool wallet to the sender address.
131
+ /// This function will transfer the amount from the pool wallet to the pool owner.
133
132
  /// The function will not update balance amounts managed by the framework.
134
133
  /// Only available for externally managed pools.
135
- function defundPoolWallet(NftId poolNftId, Amount amount) external;
134
+ function defundPoolWallet(Amount amount) external;
136
135
 
137
136
 
138
137
  /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
@@ -148,8 +147,10 @@ interface IPoolService is IService {
148
147
  external
149
148
  view
150
149
  returns(
150
+ NftId poolNftId,
151
151
  Amount totalCollateralAmount,
152
- Amount localCollateralAmount
152
+ Amount localCollateralAmount,
153
+ bool poolIsVerifyingApplications
153
154
  );
154
155
 
155
156