@etherisc/gif-next 0.0.2-8b116c2-371 → 0.0.2-8c1d8cd-727

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