@etherisc/gif-next 0.0.2-a4051e9-983 → 0.0.2-a49c197-934

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