@etherisc/gif-next 0.0.2-c0457ac-280 → 0.0.2-c0923b6-664

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