@etherisc/gif-next 0.0.2-82c6d88-499 → 0.0.2-8311e70-020

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