@etherisc/gif-next 0.0.2-7a0dfe9-847 → 0.0.2-7aa572b-366

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 (536) hide show
  1. package/README.md +100 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → accounting/IAccountingService.sol/IAccountingService.json} +365 -113
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +673 -262
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
  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 +549 -209
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +164 -487
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +83 -387
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +629 -365
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +186 -128
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +84 -198
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +437 -126
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1461 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2018 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1404 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1628 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2405 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +540 -65
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +290 -57
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +549 -166
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1034 -311
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1689 -773
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +303 -227
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +106 -106
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +921 -718
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +108 -355
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
  109. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +91 -140
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +84 -323
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +169 -190
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +140 -98
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +132 -421
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +295 -350
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +161 -115
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +148 -121
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +120 -236
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +428 -324
  134. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  135. package/artifacts/contracts/pool/Pool.sol/Pool.json +110 -416
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  137. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +538 -0
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  139. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +654 -549
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +189 -107
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  143. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +188 -180
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +122 -100
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  147. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +261 -439
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  149. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +431 -234
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +158 -124
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +136 -9
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +157 -83
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  163. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +245 -233
  164. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  165. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +88 -8
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  167. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +465 -307
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  169. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +155 -109
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  173. package/artifacts/contracts/product/PricingService.sol/PricingService.json +224 -338
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +128 -138
  176. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  177. package/artifacts/contracts/product/Product.sol/Product.json +253 -431
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  179. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +342 -42
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  189. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +548 -103
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +795 -394
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +104 -90
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +483 -253
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +67 -277
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +438 -647
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +140 -136
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +80 -100
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +394 -300
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +91 -140
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  235. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  242. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  245. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  246. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  247. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  248. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +83 -322
  249. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  250. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  251. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  253. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  254. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  255. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  256. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  257. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  258. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  259. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  260. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  261. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  262. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  263. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  264. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  269. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  270. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  271. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  272. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +312 -133
  273. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  274. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +155 -23
  275. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  276. package/artifacts/contracts/staking/Staking.sol/Staking.json +410 -390
  277. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  278. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  279. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  281. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +144 -101
  283. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  284. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +91 -67
  285. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  286. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +224 -171
  287. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  288. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +121 -95
  289. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +205 -150
  291. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  292. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +91 -50
  293. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  294. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Amount.sol/AmountLib.json +35 -11
  296. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  298. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  300. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  302. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  304. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  306. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  307. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  308. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  310. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  311. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  312. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  314. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  316. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  318. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  320. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  322. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  324. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +69 -2
  326. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  328. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  330. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  332. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  334. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  336. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
  338. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  340. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  342. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  343. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  344. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -80
  345. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  346. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  347. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  348. package/contracts/accounting/AccountingService.sol +261 -0
  349. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  350. package/contracts/accounting/IAccountingService.sol +45 -0
  351. package/contracts/authorization/AccessAdmin.sol +456 -267
  352. package/contracts/authorization/AccessAdminLib.sol +396 -0
  353. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  354. package/contracts/authorization/Authorization.sol +159 -203
  355. package/contracts/authorization/IAccess.sol +25 -6
  356. package/contracts/authorization/IAccessAdmin.sol +87 -79
  357. package/contracts/authorization/IAuthorization.sol +9 -36
  358. package/contracts/authorization/IServiceAuthorization.sol +57 -17
  359. package/contracts/authorization/ServiceAuthorization.sol +254 -24
  360. package/contracts/distribution/BasicDistribution.sol +20 -28
  361. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  362. package/contracts/distribution/Distribution.sol +42 -96
  363. package/contracts/distribution/DistributionService.sol +242 -131
  364. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  365. package/contracts/distribution/IDistributionComponent.sol +4 -11
  366. package/contracts/distribution/IDistributionService.sol +47 -29
  367. package/contracts/examples/fire/DamageLevel.sol +59 -0
  368. package/contracts/examples/fire/FirePool.sol +86 -0
  369. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  370. package/contracts/examples/fire/FireProduct.sol +433 -0
  371. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  372. package/contracts/examples/fire/FireUSD.sol +26 -0
  373. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  374. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  375. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  376. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  377. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  378. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  379. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  380. package/contracts/instance/BundleSet.sol +42 -38
  381. package/contracts/instance/IInstance.sol +101 -42
  382. package/contracts/instance/IInstanceService.sol +52 -31
  383. package/contracts/instance/Instance.sol +189 -97
  384. package/contracts/instance/InstanceAdmin.sol +275 -158
  385. package/contracts/instance/InstanceAuthorizationV3.sol +120 -58
  386. package/contracts/instance/InstanceReader.sol +478 -251
  387. package/contracts/instance/InstanceService.sol +298 -229
  388. package/contracts/instance/InstanceServiceManager.sol +6 -7
  389. package/contracts/instance/InstanceStore.sol +23 -2
  390. package/contracts/instance/RiskSet.sol +118 -0
  391. package/contracts/instance/base/BalanceStore.sol +3 -5
  392. package/contracts/instance/base/ObjectCounter.sol +1 -2
  393. package/contracts/instance/base/ObjectLifecycle.sol +11 -4
  394. package/contracts/instance/base/ObjectSet.sol +31 -33
  395. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  396. package/contracts/instance/module/IBundle.sol +6 -5
  397. package/contracts/instance/module/IComponents.sol +30 -19
  398. package/contracts/instance/module/IDistribution.sol +21 -8
  399. package/contracts/instance/module/IPolicy.sol +50 -29
  400. package/contracts/instance/module/IRisk.sol +5 -0
  401. package/contracts/mock/Dip.sol +1 -1
  402. package/contracts/oracle/BasicOracle.sol +1 -4
  403. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  404. package/contracts/oracle/IOracle.sol +9 -4
  405. package/contracts/oracle/IOracleService.sol +2 -1
  406. package/contracts/oracle/Oracle.sol +9 -25
  407. package/contracts/oracle/OracleService.sol +117 -85
  408. package/contracts/oracle/OracleServiceManager.sol +6 -6
  409. package/contracts/pool/BasicPool.sol +37 -28
  410. package/contracts/pool/BasicPoolAuthorization.sol +38 -11
  411. package/contracts/pool/BundleService.sol +184 -151
  412. package/contracts/pool/BundleServiceManager.sol +6 -6
  413. package/contracts/pool/IBundleService.sol +28 -34
  414. package/contracts/pool/IPoolComponent.sol +19 -15
  415. package/contracts/pool/IPoolService.sol +90 -75
  416. package/contracts/pool/Pool.sol +143 -130
  417. package/contracts/pool/PoolLib.sol +353 -0
  418. package/contracts/pool/PoolService.sol +377 -248
  419. package/contracts/pool/PoolServiceManager.sol +4 -4
  420. package/contracts/product/ApplicationService.sol +117 -48
  421. package/contracts/product/ApplicationServiceManager.sol +4 -4
  422. package/contracts/product/BasicProduct.sol +12 -45
  423. package/contracts/product/BasicProductAuthorization.sol +32 -12
  424. package/contracts/product/ClaimService.sol +371 -157
  425. package/contracts/product/ClaimServiceManager.sol +4 -4
  426. package/contracts/product/IApplicationService.sol +9 -2
  427. package/contracts/product/IClaimService.sol +44 -8
  428. package/contracts/product/IPolicyService.sol +52 -36
  429. package/contracts/product/IPricingService.sol +11 -10
  430. package/contracts/product/IProductComponent.sol +27 -5
  431. package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -8
  432. package/contracts/product/PolicyService.sol +434 -273
  433. package/contracts/product/PolicyServiceLib.sol +139 -0
  434. package/contracts/product/PolicyServiceManager.sol +4 -4
  435. package/contracts/product/PricingService.sol +90 -84
  436. package/contracts/product/PricingServiceManager.sol +4 -4
  437. package/contracts/product/Product.sol +170 -93
  438. package/contracts/product/RiskService.sol +157 -0
  439. package/contracts/product/RiskServiceManager.sol +39 -0
  440. package/contracts/registry/ChainNft.sol +72 -40
  441. package/contracts/registry/IRegistry.sol +64 -28
  442. package/contracts/registry/IRegistryService.sol +5 -12
  443. package/contracts/registry/IRelease.sol +29 -0
  444. package/contracts/registry/ITransferInterceptor.sol +1 -2
  445. package/contracts/registry/Registry.sol +357 -203
  446. package/contracts/registry/RegistryAdmin.sol +110 -287
  447. package/contracts/registry/RegistryAuthorization.sol +284 -0
  448. package/contracts/registry/RegistryService.sol +37 -48
  449. package/contracts/registry/RegistryServiceManager.sol +3 -3
  450. package/contracts/registry/ReleaseAdmin.sol +195 -0
  451. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  452. package/contracts/registry/ReleaseRegistry.sol +275 -242
  453. package/contracts/registry/ServiceAuthorizationV3.sol +201 -57
  454. package/contracts/registry/TokenRegistry.sol +12 -13
  455. package/contracts/shared/Component.sol +65 -135
  456. package/contracts/shared/ComponentService.sol +411 -384
  457. package/contracts/shared/ComponentServiceManager.sol +8 -5
  458. package/contracts/shared/ContractLib.sol +311 -0
  459. package/contracts/shared/IComponent.sol +6 -18
  460. package/contracts/shared/IComponentService.sol +42 -40
  461. package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
  462. package/contracts/shared/ILifecycle.sol +3 -1
  463. package/contracts/shared/INftOwnable.sol +2 -0
  464. package/contracts/shared/IPolicyHolder.sol +12 -22
  465. package/contracts/shared/IRegisterable.sol +22 -1
  466. package/contracts/shared/IService.sol +3 -5
  467. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  468. package/contracts/shared/InstanceLinkedComponent.sol +72 -50
  469. package/contracts/shared/KeyValueStore.sol +1 -1
  470. package/contracts/shared/Lifecycle.sol +15 -4
  471. package/contracts/shared/NftOwnable.sol +31 -11
  472. package/contracts/shared/PolicyHolder.sol +20 -59
  473. package/contracts/shared/Registerable.sol +52 -21
  474. package/contracts/shared/RegistryLinked.sol +9 -14
  475. package/contracts/shared/Service.sol +20 -35
  476. package/contracts/shared/TokenHandler.sol +310 -26
  477. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  478. package/contracts/staking/IStaking.sol +48 -20
  479. package/contracts/staking/IStakingService.sol +21 -11
  480. package/contracts/staking/Staking.sol +198 -109
  481. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +95 -45
  482. package/contracts/staking/StakingManager.sol +8 -6
  483. package/contracts/staking/StakingReader.sol +40 -24
  484. package/contracts/staking/StakingService.sol +96 -39
  485. package/contracts/staking/StakingServiceManager.sol +6 -5
  486. package/contracts/staking/StakingStore.sol +3 -2
  487. package/contracts/staking/TargetManagerLib.sol +8 -4
  488. package/contracts/type/Amount.sol +15 -0
  489. package/contracts/type/Blocknumber.sol +7 -1
  490. package/contracts/type/ClaimId.sol +6 -1
  491. package/contracts/type/Fee.sol +8 -8
  492. package/contracts/type/Key32.sol +2 -2
  493. package/contracts/type/Key32Set.sol +62 -0
  494. package/contracts/type/NftId.sol +7 -0
  495. package/contracts/type/ObjectType.sol +73 -37
  496. package/contracts/type/PayoutId.sol +10 -10
  497. package/contracts/type/RiskId.sol +38 -6
  498. package/contracts/type/RoleId.sol +61 -55
  499. package/contracts/type/Seconds.sol +25 -1
  500. package/contracts/type/Selector.sol +5 -0
  501. package/contracts/type/StateId.sol +15 -1
  502. package/contracts/type/String.sol +12 -0
  503. package/contracts/type/Timestamp.sol +10 -5
  504. package/contracts/type/UFixed.sol +37 -126
  505. package/contracts/type/Version.sol +54 -5
  506. package/contracts/upgradeability/ProxyManager.sol +81 -45
  507. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
  508. package/contracts/upgradeability/Versionable.sol +6 -3
  509. package/package.json +5 -4
  510. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  511. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  512. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  513. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  514. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  515. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  516. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  517. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  518. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  519. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  520. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  521. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  522. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  523. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  524. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  525. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  526. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  527. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -470
  528. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  529. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  530. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  531. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  532. package/contracts/instance/module/IAccess.sol +0 -46
  533. package/contracts/product/ProductService.sol +0 -99
  534. package/contracts/product/ProductServiceManager.sol +0 -39
  535. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  536. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,33 +1,30 @@
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
-
4
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
6
5
  import {IBundle} from "../instance/module/IBundle.sol";
7
6
  import {IBundleService} from "./IBundleService.sol";
8
- import {IComponents} from "../instance/module/IComponents.sol";
9
7
  import {IComponentService} from "../shared/IComponentService.sol";
10
8
  import {IRegistry} from "../registry/IRegistry.sol";
11
9
  import {IRegistryService} from "../registry/IRegistryService.sol";
12
10
  import {IInstance} from "../instance/IInstance.sol";
13
11
  import {InstanceStore} from "../instance/InstanceStore.sol";
14
- import {IPolicy} from "../instance/module/IPolicy.sol";
15
12
 
16
13
  import {Amount, AmountLib} from "../type/Amount.sol";
17
14
  import {BundleSet} from "../instance/BundleSet.sol";
18
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
19
15
  import {Fee} from "../type/Fee.sol";
20
16
  import {InstanceReader} from "../instance/InstanceReader.sol";
21
17
  import {NftId, NftIdLib} from "../type/NftId.sol";
22
- import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
23
- import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
18
+ import {ObjectType, ACCOUNTING, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
19
+ import {PoolLib} from "./PoolLib.sol";
24
20
  import {Seconds} from "../type/Seconds.sol";
25
- import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
21
+ import {Service} from "../shared/Service.sol";
22
+ import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
23
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
26
24
 
27
- string constant BUNDLE_SERVICE_NAME = "BundleService";
28
25
 
29
26
  contract BundleService is
30
- ComponentVerifyingService,
27
+ Service,
31
28
  IBundleService
32
29
  {
33
30
 
@@ -35,6 +32,7 @@ contract BundleService is
35
32
 
36
33
  address private _registryAddress;
37
34
  IRegistryService private _registryService;
35
+ IAccountingService private _accountingService;
38
36
  IComponentService private _componentService;
39
37
 
40
38
  function _initialize(
@@ -42,20 +40,21 @@ 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 authority,
48
+ address registry
49
+ ) = abi.decode(data, (address, address));
50
+
51
+ __Service_init(authority, registry, owner);
54
52
 
55
53
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
54
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
56
55
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
57
56
 
58
- registerInterface(type(IBundleService).interfaceId);
57
+ _registerInterface(type(IBundleService).interfaceId);
59
58
  }
60
59
 
61
60
 
@@ -65,8 +64,11 @@ contract BundleService is
65
64
  )
66
65
  external
67
66
  virtual
67
+ restricted()
68
68
  {
69
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
69
+ _checkNftType(bundleNftId, BUNDLE());
70
+
71
+ (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
70
72
  InstanceReader instanceReader = instance.getInstanceReader();
71
73
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
72
74
  if(bundleInfo.poolNftId.eqz()) {
@@ -83,19 +85,18 @@ contract BundleService is
83
85
 
84
86
 
85
87
  function create(
86
- IInstance instance,
87
- NftId poolNftId,
88
88
  address owner,
89
89
  Fee memory bundleFee,
90
- Amount stakingAmount,
91
90
  Seconds lifetime,
92
91
  bytes calldata filter
93
92
  )
94
93
  external
95
- override
96
- restricted
94
+ virtual
95
+ restricted()
97
96
  returns(NftId bundleNftId)
98
97
  {
98
+ (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
99
+
99
100
  // register bundle with registry
100
101
  bundleNftId = _registryService.registerBundle(
101
102
  IRegistry.ObjectInfo(
@@ -113,26 +114,21 @@ contract BundleService is
113
114
  InstanceStore instanceStore = instance.getInstanceStore();
114
115
  instanceStore.createBundle(
115
116
  bundleNftId,
116
- IBundle.BundleInfo(
117
- poolNftId,
118
- bundleFee,
119
- filter,
120
- lifetime,
121
- TimestampLib.blockTimestamp().addSeconds(lifetime),
122
- zeroTimestamp()));
123
-
124
- // bundle book keeping
125
- _componentService.increaseBundleBalance(
126
- instanceStore,
127
- bundleNftId,
128
- stakingAmount,
129
- AmountLib.zero()); // fee amount
117
+ IBundle.BundleInfo({
118
+ poolNftId: poolNftId,
119
+ fee: bundleFee,
120
+ filter: filter,
121
+ activatedAt: TimestampLib.blockTimestamp(),
122
+ expiredAt: TimestampLib.blockTimestamp().addSeconds(lifetime),
123
+ closedAt: zeroTimestamp()
124
+ })
125
+ );
130
126
 
131
127
  // put bundle under bundle managemet
132
128
  BundleSet bundleManager = instance.getBundleSet();
133
129
  bundleManager.add(bundleNftId);
134
130
 
135
- // TODO add logging
131
+ emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
136
132
  }
137
133
 
138
134
 
@@ -147,45 +143,58 @@ contract BundleService is
147
143
  virtual
148
144
  restricted()
149
145
  {
146
+ // checks
147
+ _checkNftType(policyNftId, POLICY());
148
+ _checkNftType(bundleNftId, BUNDLE());
149
+
150
150
  InstanceReader instanceReader = instance.getInstanceReader();
151
- StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
152
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
153
151
 
154
- // ensure bundle is active and not yet expired
155
- if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
156
- revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
152
+ {
153
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
154
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
155
+
156
+ // ensure bundle is active and not yet expired
157
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
158
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
159
+ }
157
160
  }
158
161
 
159
- // ensure bundle capacity is sufficent to collateralize policy
160
162
  InstanceStore instanceStore = instance.getInstanceStore();
161
- (
162
- Amount balanceAmount,
163
- Amount lockedAmount,
164
- Amount feeAmount
165
- ) = instanceStore.getAmounts(bundleNftId);
166
163
 
167
- Amount capacity = balanceAmount - (lockedAmount + feeAmount);
168
- if(capacity < collateralAmount) {
169
- revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
164
+ {
165
+ // ensure bundle capacity is sufficent to collateralize policy
166
+ (
167
+ Amount balanceAmount,
168
+ Amount lockedAmount,
169
+ Amount feeAmount
170
+ ) = instanceStore.getAmounts(bundleNftId);
171
+
172
+ Amount capacity = balanceAmount - (lockedAmount + feeAmount);
173
+ if(capacity < collateralAmount) {
174
+ revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
175
+ }
170
176
  }
171
177
 
178
+ // effects
172
179
  // updated locked amount
173
180
  instanceStore.increaseLocked(bundleNftId, collateralAmount);
174
-
175
- // link policy to bundle in bundle manger
176
- _linkPolicy(instance, policyNftId);
177
181
  }
178
182
 
179
183
 
180
184
  function lock(NftId bundleNftId)
181
185
  external
182
186
  virtual
187
+ restricted()
183
188
  {
184
- (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
189
+ // checks
190
+ _checkNftType(bundleNftId, BUNDLE());
191
+
192
+ (, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
185
193
 
186
194
  // udpate bundle state
187
195
  instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
188
196
 
197
+ // effects
189
198
  // update set of active bundles
190
199
  BundleSet bundleManager = instance.getBundleSet();
191
200
  bundleManager.lock(bundleNftId);
@@ -197,9 +206,14 @@ contract BundleService is
197
206
  function unlock(NftId bundleNftId)
198
207
  external
199
208
  virtual
209
+ restricted()
200
210
  {
201
- (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
211
+ // checks
212
+ _checkNftType(bundleNftId, BUNDLE());
213
+
214
+ (, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
202
215
 
216
+ // effects
203
217
  // udpate bundle state
204
218
  instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
205
219
 
@@ -217,10 +231,13 @@ contract BundleService is
217
231
  )
218
232
  external
219
233
  virtual
220
- restricted
234
+ restricted()
235
+ returns (Amount unstakedAmount, Amount feeAmount)
221
236
  {
222
- // udpate bundle state
223
- instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
237
+ // checks
238
+ _checkNftType(bundleNftId, BUNDLE());
239
+
240
+ InstanceReader instanceReader = instance.getInstanceReader();
224
241
 
225
242
  // ensure no open policies attached to bundle
226
243
  BundleSet bundleManager = instance.getBundleSet();
@@ -229,132 +246,148 @@ contract BundleService is
229
246
  revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
230
247
  }
231
248
 
232
- // update set of active bundles
233
- bundleManager.lock(bundleNftId);
249
+ // effects
250
+ {
251
+ // update bundle state
252
+ InstanceStore instanceStore = instance.getInstanceStore();
253
+ instanceStore.updateBundleState(bundleNftId, CLOSED());
254
+ bundleManager.lock(bundleNftId);
255
+
256
+ // decrease bundle counters
257
+ Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
258
+ feeAmount = instanceReader.getFeeAmount(bundleNftId);
259
+ unstakedAmount = balanceAmountWithFees - feeAmount;
260
+ _accountingService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
261
+ }
234
262
  }
235
263
 
236
- function stake(NftId bundleNftId, Amount amount)
264
+ /// @inheritdoc IBundleService
265
+ function stake(
266
+ InstanceReader instanceReader,
267
+ InstanceStore instanceStore,
268
+ NftId bundleNftId,
269
+ Amount amount
270
+ )
237
271
  external
238
272
  virtual
239
273
  restricted()
240
- returns(Amount netAmount)
241
274
  {
242
- // TODO: implement
243
- revert();
244
- }
275
+ // checks
276
+ _checkNftType(bundleNftId, BUNDLE());
245
277
 
246
- function unstake(NftId bundleNftId, Amount amount)
247
- external
248
- virtual
249
- restricted()
250
- returns(Amount netAmount)
251
- {
252
- // TODO: implement
253
- revert();
254
- }
278
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
279
+ StateId bundleState = instanceReader.getBundleState(bundleNftId);
255
280
 
281
+ if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
282
+ || bundleInfo.expiredAt < TimestampLib.blockTimestamp()
283
+ || bundleInfo.closedAt.gtz()) {
284
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
285
+ }
256
286
 
257
- function releaseCollateral(
258
- IInstance instance,
259
- NftId policyNftId,
287
+ // effects
288
+ _accountingService.increaseBundleBalance(
289
+ instanceStore,
290
+ bundleNftId,
291
+ amount,
292
+ AmountLib.zero());
293
+ }
294
+
295
+ /// @inheritdoc IBundleService
296
+ function unstake(
297
+ InstanceStore instanceStore,
260
298
  NftId bundleNftId,
261
- Amount collateralAmount
299
+ Amount amount
262
300
  )
263
- external
301
+ external
264
302
  virtual
265
303
  restricted()
304
+ returns (Amount unstakedAmount)
266
305
  {
267
- instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
268
- }
306
+ // checks
307
+ _checkNftType(bundleNftId, BUNDLE());
269
308
 
270
- /// @dev unlinks policy from bundle
271
- function unlinkPolicy(
272
- IInstance instance,
273
- NftId policyNftId
274
- )
275
- external
276
- virtual
277
- restricted
278
- {
279
- // ensure policy is closeable
280
- if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
281
- revert ErrorBundleServicePolicyNotCloseable(policyNftId);
309
+ (
310
+ Amount balanceAmount,
311
+ Amount lockedAmount,
312
+ Amount feeAmount
313
+ ) = instanceStore.getAmounts(bundleNftId);
314
+
315
+ unstakedAmount = amount;
316
+ Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
317
+
318
+ // if amount is max, then unstake all available
319
+ if (amount.gte(AmountLib.max())) {
320
+ unstakedAmount = availableAmount;
321
+ }
322
+
323
+ // ensure unstaked amount does not exceed available amount
324
+ if (unstakedAmount > availableAmount) {
325
+ revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
282
326
  }
283
327
 
284
- instance.getBundleSet().unlinkPolicy(policyNftId);
328
+ // effects
329
+ _accountingService.decreaseBundleBalance(
330
+ instanceStore,
331
+ bundleNftId,
332
+ unstakedAmount,
333
+ AmountLib.zero());
285
334
  }
286
335
 
287
336
  /// @inheritdoc IBundleService
288
- function withdrawBundleFees(NftId bundleNftId, Amount amount)
289
- public
337
+ function extend(NftId bundleNftId, Seconds lifetimeExtension)
338
+ external
290
339
  virtual
291
- // TODO: restricted() (once #462 is done)
292
- returns (Amount withdrawnAmount)
340
+ restricted()
341
+ returns (Timestamp extendedExpiredAt)
293
342
  {
294
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
295
- InstanceReader reader = instance.getInstanceReader();
296
-
297
- IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
298
- address poolWallet = poolInfo.wallet;
299
-
300
- IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
301
-
302
- // determine withdrawn amount
303
- withdrawnAmount = amount;
304
- if (withdrawnAmount.gte(AmountLib.max())) {
305
- withdrawnAmount = reader.getFeeAmount(bundleNftId);
306
- } else {
307
- if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
308
- revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
309
- }
310
- }
343
+ // checks
344
+ _checkNftType(bundleNftId, BUNDLE());
345
+
346
+ (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
347
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
348
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
311
349
 
312
- if (withdrawnAmount.eqz()) {
313
- revert ErrorBundleServiceFeesWithdrawAmountIsZero();
350
+ // ensure bundle belongs to the pool
351
+ if (bundleInfo.poolNftId != poolNftId) {
352
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
314
353
  }
315
354
 
316
- // check allowance
317
- IERC20Metadata token = IERC20Metadata(poolInfo.token);
318
- uint256 tokenAllowance = token.allowance(poolWallet, address(poolInfo.tokenHandler));
319
- if (tokenAllowance < withdrawnAmount.toInt()) {
320
- revert ErrorBundleServiceWalletAllowanceTooSmall(poolWallet, address(poolInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
355
+ // ensure bundle is active and not yet expired
356
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
357
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
321
358
  }
322
359
 
323
- // decrease fee counters by withdrawnAmount
324
- {
325
- InstanceStore store = instance.getInstanceStore();
326
- // decrease fee amount of the bundle
327
- _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
328
- // decrease pool balance
329
- _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
360
+ if (lifetimeExtension.eqz()) {
361
+ revert ErrorBundleServiceExtensionLifetimeIsZero();
330
362
  }
331
363
 
332
- // transfer amount to bundle owner
333
- {
334
- address owner = getRegistry().ownerOf(bundleNftId);
335
- // TODO: centralize token handling (issue #471)
336
- poolInfo.tokenHandler.transfer(poolWallet, owner, withdrawnAmount);
364
+ // effects
365
+ bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
366
+ extendedExpiredAt = bundleInfo.expiredAt;
337
367
 
338
- emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(token), withdrawnAmount);
339
- }
368
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
369
+
370
+ emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, extendedExpiredAt);
340
371
  }
341
372
 
342
- /// @dev links policy to bundle
343
- function _linkPolicy(IInstance instance, NftId policyNftId)
344
- internal
373
+
374
+ function releaseCollateral(
375
+ InstanceStore instanceStore,
376
+ NftId policyNftId,
377
+ NftId bundleNftId,
378
+ Amount collateralAmount
379
+ )
380
+ external
381
+ virtual
382
+ restricted()
345
383
  {
346
- InstanceReader instanceReader = instance.getInstanceReader();
347
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
384
+ _checkNftType(policyNftId, POLICY());
385
+ _checkNftType(bundleNftId, BUNDLE());
348
386
 
349
- // ensure policy has not yet been activated in a previous tx already
350
- if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
351
- revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
352
- }
353
-
354
- BundleSet bundleManager = instance.getBundleSet();
355
- bundleManager.linkPolicy(policyNftId);
387
+ instanceStore.decreaseLocked(bundleNftId, collateralAmount);
356
388
  }
357
389
 
390
+
358
391
  function _getDomain() internal pure override returns(ObjectType) {
359
392
  return BUNDLE();
360
393
  }
@@ -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(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
24
  data,
25
25
  salt);
26
26
 
@@ -1,18 +1,21 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IService} from "../shared/IService.sol";
5
+ import {IInstance} from "../instance/IInstance.sol";
6
+
4
7
  import {Amount} from "../type/Amount.sol";
5
8
  import {NftId} from "../type/NftId.sol";
6
9
  import {Fee} from "../type/Fee.sol";
7
- import {IService} from "../shared/IService.sol";
8
- import {IBundle} from "../instance/module/IBundle.sol";
9
- import {IInstance} from "../instance/IInstance.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {InstanceStore} from "../instance/InstanceStore.sol";
10
12
  import {Seconds} from "../type/Seconds.sol";
11
13
  import {StateId} from "../type/StateId.sol";
12
14
  import {Timestamp} from "../type/Timestamp.sol";
13
15
 
14
16
  interface IBundleService is IService {
15
17
 
18
+ event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId);
16
19
  event LogBundleServiceBundleActivated(NftId bundleNftId);
17
20
  event LogBundleServiceBundleLocked(NftId bundleNftId);
18
21
 
@@ -25,22 +28,17 @@ interface IBundleService is IService {
25
28
  error ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId expectedPool, NftId actualPool);
26
29
 
27
30
  error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
31
+
32
+ error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
28
33
 
29
- // error ErrorBundleServiceBundleNotActive(NftId distributorNftId);
30
- error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
31
- error ErrorBundleServiceFeesWithdrawAmountIsZero();
32
- error ErrorBundleServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
34
+ error ErrorBundleServiceExtensionLifetimeIsZero();
33
35
 
34
- event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
36
+ event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
35
37
 
36
- /// @dev create a new bundle for the specified attributes
37
- /// may only be called by pool service
38
+ /// @dev Create a new bundle for the specified attributes.
38
39
  function create(
39
- IInstance instance, // instance relevant for bundle
40
- NftId poolNftId, // the pool the bundle will be linked to
41
40
  address owner, // initial bundle owner
42
41
  Fee memory fee, // fees deducted from premium that go to bundle owner
43
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
44
42
  Seconds lifetime, // initial duration for which new policies are covered
45
43
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
46
44
  )
@@ -48,12 +46,21 @@ interface IBundleService is IService {
48
46
  returns(NftId bundleNftId); // the nft id of the newly created bundle
49
47
 
50
48
 
51
- /// @dev increase bundle stakes by the specified amount
52
- /// may only be called by the bundle owner
53
- function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
49
+ /// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
50
+ /// may only be called by the pool service
51
+ function stake(
52
+ InstanceReader instanceReader,
53
+ InstanceStore instanceStore,
54
+ NftId bundleNftId,
55
+ Amount amount
56
+ ) external;
54
57
 
55
58
  /// @dev decrease bundle stakes by the specified amount
56
- function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
59
+ /// may only be called by the pool service
60
+ function unstake(InstanceStore instanceStore, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
61
+
62
+ /// @dev extend the lifetime of the bundle by the specified time in seconds
63
+ function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
57
64
 
58
65
  /// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
59
66
  /// only active bundles may be locked
@@ -69,10 +76,12 @@ interface IBundleService is IService {
69
76
  /// only open bundles (active or locked) may be closed
70
77
  /// to close a bundle it may not have any non-closed polices attached to it
71
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
72
81
  function close(
73
82
  IInstance instance,
74
83
  NftId bundleNftId
75
- ) external;
84
+ ) external returns (Amount balanceAmount, Amount feeAmount);
76
85
 
77
86
  /// @dev set bundle fee to provided value
78
87
  /// may only be called by registered and unlocked pool components
@@ -98,24 +107,9 @@ interface IBundleService is IService {
98
107
  /// @dev releases the specified collateral in the bundle
99
108
  /// may only be called by pool service
100
109
  function releaseCollateral(
101
- IInstance instance,
110
+ InstanceStore instanceStore,
102
111
  NftId policyNftId,
103
112
  NftId bundleNftId,
104
113
  Amount collateralAmount
105
114
  ) external;
106
-
107
- /// @dev unlink policy from bundle
108
- /// policy may only be unlinked if policy is closeable
109
- /// may only be called by pool service
110
- function unlinkPolicy(
111
- IInstance instance,
112
- NftId policyNftId
113
- ) external;
114
-
115
- /// @dev Withdraw bundle feeds for the given bundle
116
- /// @param bundleNftId the bundle Nft Id
117
- /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
118
- /// @return withdrawnAmount the effective withdrawn amount
119
- function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
120
-
121
115
  }