@etherisc/gif-next 0.0.2-f11de3a-698 → 0.0.2-f12cf4d-104

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 (450) hide show
  1. package/README.md +9 -7
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +136 -360
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +99 -315
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +206 -292
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +125 -117
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +89 -115
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -62
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1430 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  53. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +31 -86
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -123
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -139
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +447 -87
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +96 -245
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +99 -87
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +337 -138
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  74. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +111 -335
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  92. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +77 -103
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +87 -303
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +107 -159
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +99 -83
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -323
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +215 -256
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +130 -110
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -47
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +98 -135
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +271 -199
  117. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/Pool.sol/Pool.json +106 -333
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +369 -386
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +112 -100
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +92 -168
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +90 -86
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +149 -319
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +311 -187
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +139 -103
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +267 -141
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +136 -116
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  146. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +365 -349
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -99
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.json +215 -309
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +117 -117
  155. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  156. package/artifacts/contracts/product/Product.sol/Product.json +147 -317
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +310 -34
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  169. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/Registry.sol/Registry.json +516 -95
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +296 -143
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +94 -284
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +91 -75
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +131 -223
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  185. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  186. package/artifacts/contracts/shared/Component.sol/Component.json +73 -274
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +424 -277
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +137 -115
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +111 -0
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -77
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +77 -103
  201. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  203. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  205. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  207. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  209. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  211. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  214. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  215. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  216. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +87 -303
  218. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  219. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  220. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  222. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  224. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  226. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  228. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  230. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  232. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  234. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +697 -25
  236. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  237. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  238. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  239. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  240. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  241. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +111 -114
  242. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  243. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  244. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  245. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
  246. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  247. package/artifacts/contracts/staking/Staking.sol/Staking.json +190 -379
  248. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  249. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  250. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  251. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +118 -99
  252. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  254. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -165
  256. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +95 -79
  258. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  259. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
  260. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  261. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  262. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  265. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  277. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  292. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  296. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  299. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  301. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  303. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  306. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  307. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
  308. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  309. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  310. package/contracts/authorization/AccessAdmin.sol +64 -59
  311. package/contracts/authorization/Authorization.sol +111 -40
  312. package/contracts/authorization/IAccess.sol +1 -0
  313. package/contracts/authorization/IAccessAdmin.sol +4 -3
  314. package/contracts/authorization/IAuthorization.sol +13 -7
  315. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  316. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  317. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  318. package/contracts/distribution/BasicDistribution.sol +2 -1
  319. package/contracts/distribution/Distribution.sol +7 -17
  320. package/contracts/distribution/DistributionService.sol +85 -67
  321. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  322. package/contracts/distribution/IDistributionComponent.sol +1 -1
  323. package/contracts/distribution/IDistributionService.sol +9 -5
  324. package/contracts/examples/fire/DamageLevel.sol +59 -0
  325. package/contracts/examples/fire/FirePool.sol +86 -0
  326. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  327. package/contracts/examples/fire/FireProduct.sol +431 -0
  328. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  329. package/contracts/examples/fire/FireUSD.sol +26 -0
  330. package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
  331. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  332. package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
  333. package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
  334. package/contracts/instance/IInstance.sol +10 -30
  335. package/contracts/instance/IInstanceService.sol +2 -23
  336. package/contracts/instance/Instance.sol +29 -51
  337. package/contracts/instance/InstanceAdmin.sol +43 -32
  338. package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
  339. package/contracts/instance/InstanceReader.sol +107 -25
  340. package/contracts/instance/InstanceService.sol +75 -104
  341. package/contracts/instance/InstanceServiceManager.sol +6 -7
  342. package/contracts/instance/InstanceStore.sol +11 -1
  343. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  344. package/contracts/instance/module/IComponents.sol +10 -6
  345. package/contracts/instance/module/IPolicy.sol +26 -25
  346. package/contracts/oracle/BasicOracle.sol +0 -1
  347. package/contracts/oracle/IOracleService.sol +2 -1
  348. package/contracts/oracle/Oracle.sol +6 -16
  349. package/contracts/oracle/OracleService.sol +56 -42
  350. package/contracts/oracle/OracleServiceManager.sol +6 -6
  351. package/contracts/pool/BasicPool.sol +35 -26
  352. package/contracts/pool/BasicPoolAuthorization.sol +13 -3
  353. package/contracts/pool/BundleService.sol +112 -69
  354. package/contracts/pool/BundleServiceManager.sol +6 -6
  355. package/contracts/pool/IBundleService.sol +16 -9
  356. package/contracts/pool/IPoolComponent.sol +19 -15
  357. package/contracts/pool/IPoolService.sol +62 -39
  358. package/contracts/pool/Pool.sol +145 -128
  359. package/contracts/pool/PoolService.sol +283 -189
  360. package/contracts/pool/PoolServiceManager.sol +4 -4
  361. package/contracts/product/ApplicationService.sol +59 -30
  362. package/contracts/product/ApplicationServiceManager.sol +4 -4
  363. package/contracts/product/BasicProduct.sol +9 -12
  364. package/contracts/product/BasicProductAuthorization.sol +0 -1
  365. package/contracts/product/ClaimService.sol +315 -118
  366. package/contracts/product/ClaimServiceManager.sol +4 -4
  367. package/contracts/product/IApplicationService.sol +1 -0
  368. package/contracts/product/IClaimService.sol +31 -7
  369. package/contracts/product/IPolicyService.sol +34 -36
  370. package/contracts/product/IPricingService.sol +10 -10
  371. package/contracts/product/IProductComponent.sol +23 -4
  372. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  373. package/contracts/product/PolicyService.sol +383 -217
  374. package/contracts/product/PolicyServiceManager.sol +4 -4
  375. package/contracts/product/PricingService.sol +54 -54
  376. package/contracts/product/PricingServiceManager.sol +3 -3
  377. package/contracts/product/Product.sol +110 -89
  378. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  379. package/contracts/product/RiskServiceManager.sol +39 -0
  380. package/contracts/registry/ChainNft.sol +68 -38
  381. package/contracts/registry/IRegistry.sol +57 -18
  382. package/contracts/registry/IRegistryService.sol +5 -12
  383. package/contracts/registry/ITransferInterceptor.sol +1 -2
  384. package/contracts/registry/Registry.sol +350 -201
  385. package/contracts/registry/RegistryAdmin.sol +151 -54
  386. package/contracts/registry/RegistryService.sol +35 -46
  387. package/contracts/registry/RegistryServiceManager.sol +2 -2
  388. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  389. package/contracts/registry/ReleaseRegistry.sol +204 -204
  390. package/contracts/registry/ServiceAuthorizationV3.sol +26 -23
  391. package/contracts/shared/Component.sol +63 -114
  392. package/contracts/shared/ComponentService.sol +296 -168
  393. package/contracts/shared/ComponentServiceManager.sol +8 -5
  394. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  395. package/contracts/shared/ContractLib.sol +54 -0
  396. package/contracts/shared/IComponent.sol +10 -13
  397. package/contracts/shared/IComponentService.sol +38 -16
  398. package/contracts/shared/IInstanceLinkedComponent.sol +7 -22
  399. package/contracts/shared/ILifecycle.sol +3 -1
  400. package/contracts/shared/INftOwnable.sol +2 -0
  401. package/contracts/shared/IPolicyHolder.sol +12 -22
  402. package/contracts/shared/IRegisterable.sol +11 -0
  403. package/contracts/shared/InitializableERC165.sol +2 -2
  404. package/contracts/shared/InstanceLinkedComponent.sol +71 -38
  405. package/contracts/shared/KeyValueStore.sol +1 -1
  406. package/contracts/shared/Lifecycle.sol +15 -4
  407. package/contracts/shared/NftOwnable.sol +27 -7
  408. package/contracts/shared/PolicyHolder.sol +15 -52
  409. package/contracts/shared/Registerable.sol +19 -11
  410. package/contracts/shared/RegistryLinked.sol +9 -14
  411. package/contracts/shared/Service.sol +20 -18
  412. package/contracts/shared/TokenHandler.sol +366 -27
  413. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  414. package/contracts/staking/IStaking.sol +11 -5
  415. package/contracts/staking/IStakingService.sol +0 -3
  416. package/contracts/staking/StakeManagerLib.sol +18 -25
  417. package/contracts/staking/Staking.sol +39 -50
  418. package/contracts/staking/StakingManager.sol +8 -6
  419. package/contracts/staking/StakingReader.sol +12 -5
  420. package/contracts/staking/StakingService.sol +77 -35
  421. package/contracts/staking/StakingServiceManager.sol +2 -2
  422. package/contracts/staking/TargetManagerLib.sol +7 -3
  423. package/contracts/type/Amount.sol +15 -0
  424. package/contracts/type/ClaimId.sol +6 -1
  425. package/contracts/type/NftId.sol +1 -0
  426. package/contracts/type/ObjectType.sol +16 -11
  427. package/contracts/type/PayoutId.sol +10 -10
  428. package/contracts/type/RiskId.sol +16 -2
  429. package/contracts/type/RoleId.sol +0 -12
  430. package/contracts/type/Seconds.sol +8 -0
  431. package/contracts/type/StateId.sol +15 -1
  432. package/contracts/type/UFixed.sol +4 -0
  433. package/contracts/upgradeability/ProxyManager.sol +68 -34
  434. package/contracts/upgradeability/Versionable.sol +2 -2
  435. package/package.json +4 -3
  436. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  437. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  438. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  439. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  440. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  441. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  442. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  443. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  444. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  445. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  446. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  447. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  448. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  449. package/contracts/product/ProductServiceManager.sol +0 -39
  450. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,8 +1,6 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
4
  import {IBundle} from "../instance/module/IBundle.sol";
7
5
  import {IBundleService} from "./IBundleService.sol";
8
6
  import {IComponents} from "../instance/module/IComponents.sol";
@@ -16,10 +14,10 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
16
14
  import {Amount, AmountLib} from "../type/Amount.sol";
17
15
  import {BundleSet} from "../instance/BundleSet.sol";
18
16
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
19
- import {Fee, FeeLib} from "../type/Fee.sol";
17
+ import {Fee} from "../type/Fee.sol";
20
18
  import {InstanceReader} from "../instance/InstanceReader.sol";
21
19
  import {NftId, NftIdLib} from "../type/NftId.sol";
22
- import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
20
+ import {ObjectType, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
23
21
  import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
24
22
  import {Seconds} from "../type/Seconds.sol";
25
23
  import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
@@ -42,20 +40,20 @@ contract BundleService is
42
40
  bytes memory data
43
41
  )
44
42
  internal
45
- initializer
46
43
  virtual override
44
+ initializer()
47
45
  {
48
- address registryAddress;
49
- address initialOwner;
50
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
51
- // TODO while PoolService is not deployed in PoolServiceManager constructor
52
- // owner is PoolServiceManager deployer
53
- initializeService(registryAddress, address(0), owner);
46
+ (
47
+ address registryAddress,
48
+ address authority
49
+ ) = abi.decode(data, (address, address));
50
+
51
+ _initializeService(registryAddress, authority, owner);
54
52
 
55
53
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
56
54
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
57
55
 
58
- registerInterface(type(IBundleService).interfaceId);
56
+ _registerInterface(type(IBundleService).interfaceId);
59
57
  }
60
58
 
61
59
 
@@ -65,7 +63,10 @@ contract BundleService is
65
63
  )
66
64
  external
67
65
  virtual
66
+ restricted()
68
67
  {
68
+ _checkNftType(bundleNftId, BUNDLE());
69
+
69
70
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
70
71
  InstanceReader instanceReader = instance.getInstanceReader();
71
72
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
@@ -83,19 +84,18 @@ contract BundleService is
83
84
 
84
85
 
85
86
  function create(
86
- IInstance instance,
87
- NftId poolNftId,
88
87
  address owner,
89
88
  Fee memory bundleFee,
90
- Amount stakingAmount,
91
89
  Seconds lifetime,
92
90
  bytes calldata filter
93
91
  )
94
92
  external
95
- override
96
- restricted
93
+ virtual
94
+ restricted()
97
95
  returns(NftId bundleNftId)
98
96
  {
97
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
98
+
99
99
  // register bundle with registry
100
100
  bundleNftId = _registryService.registerBundle(
101
101
  IRegistry.ObjectInfo(
@@ -123,18 +123,11 @@ contract BundleService is
123
123
  })
124
124
  );
125
125
 
126
- // bundle book keeping
127
- _componentService.increaseBundleBalance(
128
- instanceStore,
129
- bundleNftId,
130
- stakingAmount,
131
- AmountLib.zero()); // fee amount
132
-
133
126
  // put bundle under bundle managemet
134
127
  BundleSet bundleManager = instance.getBundleSet();
135
128
  bundleManager.add(bundleNftId);
136
129
 
137
- // TODO add logging
130
+ emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
138
131
  }
139
132
 
140
133
 
@@ -149,26 +142,35 @@ contract BundleService is
149
142
  virtual
150
143
  restricted()
151
144
  {
145
+ _checkNftType(policyNftId, POLICY());
146
+ _checkNftType(bundleNftId, BUNDLE());
147
+
152
148
  InstanceReader instanceReader = instance.getInstanceReader();
153
- StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
154
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
155
149
 
156
- // ensure bundle is active and not yet expired
157
- if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
158
- 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
+ }
159
158
  }
160
159
 
161
- // ensure bundle capacity is sufficent to collateralize policy
162
160
  InstanceStore instanceStore = instance.getInstanceStore();
163
- (
164
- Amount balanceAmount,
165
- Amount lockedAmount,
166
- Amount feeAmount
167
- ) = instanceStore.getAmounts(bundleNftId);
168
161
 
169
- Amount capacity = balanceAmount - (lockedAmount + feeAmount);
170
- if(capacity < collateralAmount) {
171
- 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
+ }
172
174
  }
173
175
 
174
176
  // updated locked amount
@@ -182,7 +184,10 @@ contract BundleService is
182
184
  function lock(NftId bundleNftId)
183
185
  external
184
186
  virtual
187
+ restricted()
185
188
  {
189
+ _checkNftType(bundleNftId, BUNDLE());
190
+
186
191
  (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
187
192
 
188
193
  // udpate bundle state
@@ -199,7 +204,10 @@ contract BundleService is
199
204
  function unlock(NftId bundleNftId)
200
205
  external
201
206
  virtual
207
+ restricted()
202
208
  {
209
+ _checkNftType(bundleNftId, BUNDLE());
210
+
203
211
  (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
204
212
 
205
213
  // udpate bundle state
@@ -219,10 +227,12 @@ contract BundleService is
219
227
  )
220
228
  external
221
229
  virtual
222
- restricted
230
+ restricted()
231
+ returns (Amount unstakedAmount, Amount feeAmount)
223
232
  {
224
- // udpate bundle state
225
- instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
233
+ _checkNftType(bundleNftId, BUNDLE());
234
+
235
+ InstanceReader instanceReader = instance.getInstanceReader();
226
236
 
227
237
  // ensure no open policies attached to bundle
228
238
  BundleSet bundleManager = instance.getBundleSet();
@@ -231,8 +241,18 @@ contract BundleService is
231
241
  revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
232
242
  }
233
243
 
234
- // update set of active bundles
235
- bundleManager.lock(bundleNftId);
244
+ {
245
+ // update bundle state
246
+ InstanceStore instanceStore = instance.getInstanceStore();
247
+ instanceStore.updateBundleState(bundleNftId, CLOSED());
248
+ bundleManager.lock(bundleNftId);
249
+
250
+ // decrease bundle counters
251
+ Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
252
+ feeAmount = instanceReader.getFeeAmount(bundleNftId);
253
+ unstakedAmount = balanceAmountWithFees - feeAmount;
254
+ _componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
255
+ }
236
256
  }
237
257
 
238
258
  /// @inheritdoc IBundleService
@@ -243,8 +263,10 @@ contract BundleService is
243
263
  )
244
264
  external
245
265
  virtual
246
- // TODO: restricted() (once #462 is done)
266
+ restricted()
247
267
  {
268
+ _checkNftType(bundleNftId, BUNDLE());
269
+
248
270
  IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
249
271
  StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
250
272
 
@@ -269,9 +291,11 @@ contract BundleService is
269
291
  )
270
292
  external
271
293
  virtual
272
- // TODO: restricted() (once #462 is done)
294
+ restricted()
273
295
  returns (Amount unstakedAmount)
274
296
  {
297
+ _checkNftType(bundleNftId, BUNDLE());
298
+
275
299
  InstanceStore instanceStore = instance.getInstanceStore();
276
300
  (
277
301
  Amount balanceAmount,
@@ -279,7 +303,7 @@ contract BundleService is
279
303
  Amount feeAmount
280
304
  ) = instanceStore.getAmounts(bundleNftId);
281
305
 
282
- Amount unstakedAmount = amount;
306
+ unstakedAmount = amount;
283
307
  Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
284
308
 
285
309
  // if amount is max, then unstake all available
@@ -297,17 +321,17 @@ contract BundleService is
297
321
  bundleNftId,
298
322
  unstakedAmount,
299
323
  AmountLib.zero());
300
-
301
- return unstakedAmount;
302
324
  }
303
325
 
304
326
  /// @inheritdoc IBundleService
305
327
  function extend(NftId bundleNftId, Seconds lifetimeExtension)
306
328
  external
307
329
  virtual
308
- // TODO: restricted() (once #462 is done)
330
+ restricted()
309
331
  returns (Timestamp extendedExpiredAt)
310
332
  {
333
+ _checkNftType(bundleNftId, BUNDLE());
334
+
311
335
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
312
336
  IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
313
337
  StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
@@ -345,6 +369,9 @@ contract BundleService is
345
369
  virtual
346
370
  restricted()
347
371
  {
372
+ _checkNftType(policyNftId, POLICY());
373
+ _checkNftType(bundleNftId, BUNDLE());
374
+
348
375
  instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
349
376
  }
350
377
 
@@ -357,8 +384,10 @@ contract BundleService is
357
384
  virtual
358
385
  restricted
359
386
  {
387
+ _checkNftType(policyNftId, POLICY());
388
+
360
389
  // ensure policy is closeable
361
- if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
390
+ if (!policyIsCloseable(instance, policyNftId)) {
362
391
  revert ErrorBundleServicePolicyNotCloseable(policyNftId);
363
392
  }
364
393
 
@@ -369,16 +398,18 @@ contract BundleService is
369
398
  function withdrawBundleFees(NftId bundleNftId, Amount amount)
370
399
  public
371
400
  virtual
372
- // TODO: restricted() (once #462 is done)
401
+ restricted()
373
402
  returns (Amount withdrawnAmount)
374
403
  {
404
+ _checkNftType(bundleNftId, BUNDLE());
405
+
375
406
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
376
407
  InstanceReader reader = instance.getInstanceReader();
377
408
 
378
409
  IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
379
- address poolWallet = poolInfo.wallet;
410
+ address poolWallet = poolInfo.tokenHandler.getWallet();
380
411
 
381
- IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
412
+ // IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
382
413
 
383
414
  // determine withdrawn amount
384
415
  withdrawnAmount = amount;
@@ -390,17 +421,6 @@ contract BundleService is
390
421
  }
391
422
  }
392
423
 
393
- if (withdrawnAmount.eqz()) {
394
- revert ErrorBundleServiceFeesWithdrawAmountIsZero();
395
- }
396
-
397
- // check allowance
398
- IERC20Metadata token = IERC20Metadata(poolInfo.token);
399
- uint256 tokenAllowance = token.allowance(poolWallet, address(poolInfo.tokenHandler));
400
- if (tokenAllowance < withdrawnAmount.toInt()) {
401
- revert ErrorBundleServiceWalletAllowanceTooSmall(poolWallet, address(poolInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
402
- }
403
-
404
424
  // decrease fee counters by withdrawnAmount
405
425
  {
406
426
  InstanceStore store = instance.getInstanceStore();
@@ -413,13 +433,36 @@ contract BundleService is
413
433
  // transfer amount to bundle owner
414
434
  {
415
435
  address owner = getRegistry().ownerOf(bundleNftId);
416
- // TODO: centralize token handling (issue #471)
417
- poolInfo.tokenHandler.transfer(poolWallet, owner, withdrawnAmount);
418
-
419
- emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(token), withdrawnAmount);
436
+ emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
437
+ poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
420
438
  }
421
439
  }
422
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
+
423
466
  /// @dev links policy to bundle
424
467
  function _linkPolicy(IInstance instance, NftId policyNftId)
425
468
  internal
@@ -12,15 +12,15 @@ contract BundleServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with pool service implementation
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
- BundleService bundleSrv = new BundleService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
23
- address(bundleSrv),
19
+ BundleService svc = new BundleService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
24
  data,
25
25
  salt);
26
26
 
@@ -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
 
@@ -27,9 +28,7 @@ interface IBundleService is IService {
27
28
  error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
28
29
 
29
30
  error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
30
- error ErrorBundleServiceFeesWithdrawAmountIsZero();
31
- error ErrorBundleServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
32
-
31
+
33
32
  error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
34
33
 
35
34
  error ErrorBundleServiceExtensionLifetimeIsZero();
@@ -37,14 +36,10 @@ interface IBundleService is IService {
37
36
  event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
38
37
  event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
39
38
 
40
- /// @dev create a new bundle for the specified attributes
41
- /// may only be called by pool service
39
+ /// @dev Create a new bundle for the specified attributes.
42
40
  function create(
43
- IInstance instance, // instance relevant for bundle
44
- NftId poolNftId, // the pool the bundle will be linked to
45
41
  address owner, // initial bundle owner
46
42
  Fee memory fee, // fees deducted from premium that go to bundle owner
47
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
48
43
  Seconds lifetime, // initial duration for which new policies are covered
49
44
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
50
45
  )
@@ -81,10 +76,12 @@ interface IBundleService is IService {
81
76
  /// only open bundles (active or locked) may be closed
82
77
  /// to close a bundle it may not have any non-closed polices attached to it
83
78
  /// may only be called by registered and unlocked pool components
79
+ /// @return balanceAmount the unstaked amount that was remaining in the bundle
80
+ /// @return feeAmount the fee amount that was remaining for the bundle
84
81
  function close(
85
82
  IInstance instance,
86
83
  NftId bundleNftId
87
- ) external;
84
+ ) external returns (Amount balanceAmount, Amount feeAmount);
88
85
 
89
86
  /// @dev set bundle fee to provided value
90
87
  /// may only be called by registered and unlocked pool components
@@ -124,10 +121,20 @@ interface IBundleService is IService {
124
121
  NftId policyNftId
125
122
  ) external;
126
123
 
124
+ // FIXME: move to pool service
127
125
  /// @dev Withdraw bundle feeds for the given bundle
128
126
  /// @param bundleNftId the bundle Nft Id
129
127
  /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
130
128
  /// @return withdrawnAmount the effective withdrawn amount
131
129
  function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
132
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
+
133
140
  }
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
+ import {ClaimId} from "../type/ClaimId.sol";
5
6
  import {Fee} from "../type/Fee.sol";
6
7
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
7
8
  import {IComponents} from "../instance/module/IComponents.sol";
@@ -20,21 +21,19 @@ interface IPoolComponent is IInstanceLinkedComponent {
20
21
 
21
22
  event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
22
23
 
23
- /// @dev this is a callback function that is called by the product service when underwriting a policy.
24
- /// the pool has the option to check the details and object to underwriting by reverting.
25
- /// the function is only called for "active" pools that ask to be involved/notified
26
- /// by product related state changes.
24
+ /// @dev This is a callback function that is called by the product service when underwriting a policy.
25
+ /// The pool has the option to check the details and object to underwriting by reverting.
26
+ /// The function is only called for "active" pools that ask to be involved/notified.
27
+ /// The default implementation is empty.
27
28
  function verifyApplication(
28
29
  NftId applicationNftId,
29
- bytes memory applicationData,
30
30
  NftId bundleNftId,
31
- bytes memory bundleFilter,
32
31
  Amount collateralizationAmount
33
32
  ) external;
34
33
 
35
- /// @dev returns true iff the application matches with the bundle
36
- /// this is a callback function that is only called if a pool declares itself as a verifying pool
37
- /// default implementation returns true
34
+ /// @dev Returns true iff the application matches with the bundle.
35
+ /// This is a callback function that is only called if a pool declares itself as a verifying pool
36
+ /// The default implementation returns true.
38
37
  function applicationMatchesBundle(
39
38
  NftId applicationNftId,
40
39
  bytes memory applicationData,
@@ -46,13 +45,18 @@ interface IPoolComponent is IInstanceLinkedComponent {
46
45
  view
47
46
  returns (bool isMatching);
48
47
 
49
- /// @dev Withdraw bundle feeds for the given bundle
50
- /// @param bundleNftId the bundle Nft Id
51
- /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
52
- /// @return withdrawnAmount the effective withdrawn amount
53
- function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
54
48
 
55
- /// @dev returns initial pool specific infos for this pool
49
+ /// @dev This is a callback function that is called by the claim service when a claim is confirmed.
50
+ /// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
51
+ /// The default implementation is empty.
52
+ function processConfirmedClaim(
53
+ NftId policyNftId,
54
+ ClaimId claimId,
55
+ Amount amount
56
+ ) external;
57
+
58
+
59
+ /// @dev Returns initial pool specific infos for this pool
56
60
  function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
57
61
 
58
62
  }