@etherisc/gif-next 0.0.2-f5a74cc-201 → 0.0.2-f61d0d1-146

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 (764) hide show
  1. package/README.md +138 -23
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1046 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +814 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +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 +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1225 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +930 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1665 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +912 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +829 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1100 -0
  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 +1461 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2026 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -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 +1404 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1628 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2452 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -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 +659 -1230
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +657 -152
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +576 -2832
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1963 -739
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +667 -414
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +351 -129
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3784 -0
  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 +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  102. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  103. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  106. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  107. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +938 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +753 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +854 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1013 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +772 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  125. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1231 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1293 -0
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +832 -0
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  133. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → pool/IBundleService.sol/IBundleService.json} +472 -320
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +886 -0
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1241 -0
  138. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  139. package/artifacts/contracts/pool/Pool.sol/Pool.json +1006 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  141. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +546 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1625 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +828 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +871 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +752 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1140 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1523 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +856 -0
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +260 -381
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1075 -0
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1007 -0
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +623 -0
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +997 -0
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  169. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +199 -185
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1375 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +816 -0
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.json +903 -0
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +776 -0
  180. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  181. package/artifacts/contracts/product/Product.sol/Product.json +1098 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +679 -114
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +325 -229
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  196. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  197. package/artifacts/contracts/registry/Registry.sol/Registry.json +1017 -150
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2147 -0
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  201. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +312 -336
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  205. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +341 -123
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  215. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +352 -101
  216. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  217. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/Component.sol/Component.json} +331 -98
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +816 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  231. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/IComponent.sol/IComponent.json} +272 -201
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1127 -0
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +688 -0
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +96 -34
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  243. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +143 -15
  246. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  247. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  248. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IService.sol/IService.json +137 -159
  250. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  251. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  252. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +776 -0
  254. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  255. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +129 -20
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +159 -55
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +156 -171
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1617 -0
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1167 -0
  280. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  281. package/artifacts/contracts/staking/Staking.sol/Staking.json +2025 -0
  282. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  284. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +804 -0
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +616 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1396 -0
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +744 -0
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2297 -0
  296. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +617 -0
  298. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  299. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  300. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  302. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  304. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  306. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  308. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  310. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  312. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  313. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  314. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  316. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  317. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  318. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  320. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  322. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  324. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  326. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  328. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  330. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +265 -0
  332. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  334. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  336. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  338. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  340. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  342. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  344. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  346. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  348. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  349. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  350. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  352. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  354. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  356. package/contracts/accounting/AccountingService.sol +274 -0
  357. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  358. package/contracts/accounting/IAccountingService.sol +47 -0
  359. package/contracts/authorization/AccessAdmin.sol +780 -0
  360. package/contracts/authorization/AccessAdminLib.sol +396 -0
  361. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  362. package/contracts/authorization/Authorization.sol +174 -0
  363. package/contracts/authorization/IAccess.sol +67 -0
  364. package/contracts/authorization/IAccessAdmin.sol +144 -0
  365. package/contracts/authorization/IAuthorization.sol +27 -0
  366. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  367. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  368. package/contracts/distribution/BasicDistribution.sol +141 -0
  369. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  370. package/contracts/distribution/Distribution.sol +247 -0
  371. package/contracts/distribution/DistributionService.sol +435 -0
  372. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  373. package/contracts/distribution/IDistributionComponent.sol +45 -0
  374. package/contracts/distribution/IDistributionService.sol +109 -0
  375. package/contracts/examples/fire/DamageLevel.sol +59 -0
  376. package/contracts/examples/fire/FirePool.sol +86 -0
  377. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  378. package/contracts/examples/fire/FireProduct.sol +433 -0
  379. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  380. package/contracts/examples/fire/FireUSD.sol +26 -0
  381. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  382. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  383. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  384. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  385. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  386. package/contracts/examples/unpermissioned/SimpleProduct.sol +385 -0
  387. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  388. package/contracts/instance/BundleSet.sol +130 -0
  389. package/contracts/instance/IInstance.sol +127 -38
  390. package/contracts/instance/IInstanceService.sol +100 -19
  391. package/contracts/instance/Instance.sol +246 -355
  392. package/contracts/instance/InstanceAdmin.sol +383 -0
  393. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  394. package/contracts/instance/InstanceReader.sol +525 -208
  395. package/contracts/instance/InstanceService.sol +460 -187
  396. package/contracts/instance/InstanceServiceManager.sol +14 -32
  397. package/contracts/instance/InstanceStore.sol +298 -0
  398. package/contracts/instance/RiskSet.sol +118 -0
  399. package/contracts/instance/base/BalanceStore.sol +121 -0
  400. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  401. package/contracts/instance/base/ObjectCounter.sol +20 -0
  402. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  403. package/contracts/instance/base/ObjectSet.sol +77 -0
  404. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  405. package/contracts/instance/module/IBundle.sol +10 -9
  406. package/contracts/instance/module/IComponents.sol +62 -0
  407. package/contracts/instance/module/IDistribution.sol +25 -10
  408. package/contracts/instance/module/IPolicy.sol +81 -21
  409. package/contracts/instance/module/IRisk.sol +6 -1
  410. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  411. package/contracts/oracle/BasicOracle.sol +45 -0
  412. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  413. package/contracts/oracle/IOracle.sol +41 -0
  414. package/contracts/oracle/IOracleComponent.sol +33 -0
  415. package/contracts/oracle/IOracleService.sol +66 -0
  416. package/contracts/oracle/Oracle.sol +154 -0
  417. package/contracts/oracle/OracleService.sol +310 -0
  418. package/contracts/oracle/OracleServiceManager.sol +39 -0
  419. package/contracts/pool/BasicPool.sol +173 -0
  420. package/contracts/pool/BasicPoolAuthorization.sol +82 -0
  421. package/contracts/pool/BundleService.sol +394 -0
  422. package/contracts/pool/BundleServiceManager.sol +39 -0
  423. package/contracts/pool/IBundleService.sol +115 -0
  424. package/contracts/pool/IPoolComponent.sol +62 -0
  425. package/contracts/pool/IPoolService.sol +164 -0
  426. package/contracts/pool/Pool.sol +343 -0
  427. package/contracts/pool/PoolLib.sol +359 -0
  428. package/contracts/pool/PoolService.sol +593 -0
  429. package/contracts/pool/PoolServiceManager.sol +39 -0
  430. package/contracts/product/ApplicationService.sol +299 -0
  431. package/contracts/product/ApplicationServiceManager.sol +38 -0
  432. package/contracts/product/BasicProduct.sol +49 -0
  433. package/contracts/product/BasicProductAuthorization.sol +63 -0
  434. package/contracts/product/ClaimService.sol +639 -0
  435. package/contracts/product/ClaimServiceManager.sol +38 -0
  436. package/contracts/product/IApplicationService.sol +69 -0
  437. package/contracts/product/IClaimService.sol +135 -0
  438. package/contracts/product/IPolicyService.sol +102 -0
  439. package/contracts/product/IPricingService.sol +40 -0
  440. package/contracts/product/IProductComponent.sol +62 -0
  441. package/contracts/product/IRiskService.sol +33 -0
  442. package/contracts/product/PolicyService.sol +645 -0
  443. package/contracts/product/PolicyServiceLib.sol +139 -0
  444. package/contracts/product/PolicyServiceManager.sol +39 -0
  445. package/contracts/product/PricingService.sol +306 -0
  446. package/contracts/product/PricingServiceManager.sol +39 -0
  447. package/contracts/product/Product.sol +472 -0
  448. package/contracts/product/RiskService.sol +157 -0
  449. package/contracts/product/RiskServiceManager.sol +39 -0
  450. package/contracts/registry/ChainNft.sol +82 -35
  451. package/contracts/registry/IRegistry.sol +126 -37
  452. package/contracts/registry/IRegistryService.sol +40 -28
  453. package/contracts/registry/IRelease.sol +29 -0
  454. package/contracts/registry/ITransferInterceptor.sol +1 -1
  455. package/contracts/registry/Registry.sol +555 -273
  456. package/contracts/registry/RegistryAdmin.sol +188 -0
  457. package/contracts/registry/RegistryAuthorization.sol +284 -0
  458. package/contracts/registry/RegistryService.sol +116 -233
  459. package/contracts/registry/RegistryServiceManager.sol +26 -53
  460. package/contracts/registry/ReleaseAdmin.sol +195 -0
  461. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  462. package/contracts/registry/ReleaseRegistry.sol +520 -0
  463. package/contracts/registry/ServiceAuthorizationV3.sol +345 -0
  464. package/contracts/registry/TokenRegistry.sol +263 -60
  465. package/contracts/shared/Component.sol +210 -0
  466. package/contracts/shared/ComponentService.sol +678 -0
  467. package/contracts/shared/ComponentServiceManager.sol +38 -0
  468. package/contracts/shared/ContractLib.sol +311 -0
  469. package/contracts/shared/IComponent.sol +58 -0
  470. package/contracts/shared/IComponentService.sol +110 -0
  471. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  472. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  473. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  474. package/contracts/shared/INftOwnable.sol +15 -12
  475. package/contracts/shared/IPolicyHolder.sol +35 -0
  476. package/contracts/shared/IRegisterable.sol +24 -5
  477. package/contracts/shared/IRegistryLinked.sol +11 -0
  478. package/contracts/shared/IService.sol +13 -5
  479. package/contracts/shared/InitializableERC165.sol +35 -0
  480. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  481. package/contracts/shared/KeyValueStore.sol +131 -0
  482. package/contracts/shared/Lifecycle.sol +88 -0
  483. package/contracts/shared/NftIdSet.sol +65 -0
  484. package/contracts/shared/NftOwnable.sol +75 -82
  485. package/contracts/shared/PolicyHolder.sol +63 -0
  486. package/contracts/shared/Registerable.sol +54 -38
  487. package/contracts/shared/RegistryLinked.sol +38 -0
  488. package/contracts/shared/Service.sol +45 -33
  489. package/contracts/shared/TokenHandler.sol +327 -12
  490. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  491. package/contracts/staking/IStaking.sol +195 -0
  492. package/contracts/staking/IStakingService.sol +170 -0
  493. package/contracts/staking/Staking.sol +605 -0
  494. package/contracts/staking/StakingLib.sol +281 -0
  495. package/contracts/staking/StakingLifecycle.sol +23 -0
  496. package/contracts/staking/StakingManager.sol +52 -0
  497. package/contracts/staking/StakingReader.sol +199 -0
  498. package/contracts/staking/StakingService.sol +468 -0
  499. package/contracts/staking/StakingServiceManager.sol +45 -0
  500. package/contracts/staking/StakingStore.sol +606 -0
  501. package/contracts/staking/TargetManagerLib.sol +211 -0
  502. package/contracts/{types → type}/AddressSet.sol +1 -1
  503. package/contracts/type/Amount.sol +150 -0
  504. package/contracts/{types → type}/Blocknumber.sol +27 -3
  505. package/contracts/type/ClaimId.sol +80 -0
  506. package/contracts/{types → type}/DistributorType.sol +2 -2
  507. package/contracts/type/Fee.sol +66 -0
  508. package/contracts/{types → type}/Key32.sol +2 -2
  509. package/contracts/type/Key32Set.sol +62 -0
  510. package/contracts/{types → type}/NftId.sol +28 -15
  511. package/contracts/{types → type}/NftIdSet.sol +2 -2
  512. package/contracts/type/ObjectType.sol +307 -0
  513. package/contracts/type/PayoutId.sol +82 -0
  514. package/contracts/{types → type}/Referral.sol +6 -1
  515. package/contracts/type/RequestId.sol +75 -0
  516. package/contracts/type/RiskId.sol +75 -0
  517. package/contracts/type/RoleId.sol +180 -0
  518. package/contracts/type/Seconds.sol +105 -0
  519. package/contracts/type/Selector.sol +107 -0
  520. package/contracts/{types → type}/StateId.sol +48 -4
  521. package/contracts/type/String.sol +65 -0
  522. package/contracts/{types → type}/Timestamp.sol +33 -19
  523. package/contracts/type/UFixed.sol +262 -0
  524. package/contracts/{types → type}/Version.sol +59 -7
  525. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  526. package/contracts/upgradeability/ProxyManager.sol +234 -0
  527. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +8 -4
  528. package/contracts/upgradeability/Versionable.sol +62 -0
  529. package/package.json +12 -8
  530. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  531. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  532. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  533. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  534. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -368
  535. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  536. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  537. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  538. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  539. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  540. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  541. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  542. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  543. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  544. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  545. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  546. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  547. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  548. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  549. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  550. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  551. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  553. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  554. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  555. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  557. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  559. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  561. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  562. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  563. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  564. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  565. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  566. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  568. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  570. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  572. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  574. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  575. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  576. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  577. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  578. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  579. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  580. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  581. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  582. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  583. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  584. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  585. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  586. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  587. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -775
  588. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  589. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  590. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  591. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  592. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  593. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -940
  594. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  595. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  596. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  597. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -272
  598. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  599. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  600. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  601. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  602. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  603. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  604. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  605. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  606. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  607. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  608. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -211
  609. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  610. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  611. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  612. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  613. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  614. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  615. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  616. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  617. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  618. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  619. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  620. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  621. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  622. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  623. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1049
  624. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  625. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -464
  626. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  627. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1147
  628. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  629. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -488
  630. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  631. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  632. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  633. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  634. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  635. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  636. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  637. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  638. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  639. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  640. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  641. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  642. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  643. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  644. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  645. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  646. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  647. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  648. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  649. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  650. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  651. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  652. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  653. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  654. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  655. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  656. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  657. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  658. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  659. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  660. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  661. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  662. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  664. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  665. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  666. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  668. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  669. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  670. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  671. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  672. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  673. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  674. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  675. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  676. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  677. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  678. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  679. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  680. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  681. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  682. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  683. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  684. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  685. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  686. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  687. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  688. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  689. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  690. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  691. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  692. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  693. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  694. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  695. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  696. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  697. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  698. package/contracts/components/BaseComponent.sol +0 -132
  699. package/contracts/components/Distribution.sol +0 -163
  700. package/contracts/components/IBaseComponent.sol +0 -31
  701. package/contracts/components/IDistributionComponent.sol +0 -44
  702. package/contracts/components/IPoolComponent.sol +0 -66
  703. package/contracts/components/IProductComponent.sol +0 -35
  704. package/contracts/components/Pool.sol +0 -267
  705. package/contracts/components/Product.sol +0 -289
  706. package/contracts/experiment/cloning/Cloner.sol +0 -47
  707. package/contracts/experiment/errors/Require.sol +0 -38
  708. package/contracts/experiment/errors/Revert.sol +0 -44
  709. package/contracts/experiment/inheritance/A.sol +0 -53
  710. package/contracts/experiment/inheritance/B.sol +0 -28
  711. package/contracts/experiment/inheritance/C.sol +0 -34
  712. package/contracts/experiment/inheritance/IA.sol +0 -13
  713. package/contracts/experiment/inheritance/IB.sol +0 -10
  714. package/contracts/experiment/inheritance/IC.sol +0 -12
  715. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  716. package/contracts/experiment/statemachine/ISM.sol +0 -25
  717. package/contracts/experiment/statemachine/SM.sol +0 -57
  718. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  719. package/contracts/experiment/types/TypeA.sol +0 -47
  720. package/contracts/experiment/types/TypeB.sol +0 -29
  721. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  722. package/contracts/instance/BundleManager.sol +0 -129
  723. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  724. package/contracts/instance/IInstanceBase.sol +0 -26
  725. package/contracts/instance/InstanceAccessManager.sol +0 -288
  726. package/contracts/instance/InstanceBase.sol +0 -41
  727. package/contracts/instance/ObjectManager.sol +0 -95
  728. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  729. package/contracts/instance/base/IInstanceBase.sol +0 -23
  730. package/contracts/instance/base/KeyValueStore.sol +0 -172
  731. package/contracts/instance/base/Lifecycle.sol +0 -100
  732. package/contracts/instance/module/IAccess.sol +0 -38
  733. package/contracts/instance/module/ISetup.sol +0 -46
  734. package/contracts/instance/module/ITreasury.sol +0 -23
  735. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  736. package/contracts/instance/service/DistributionService.sol +0 -88
  737. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  738. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  739. package/contracts/instance/service/IDistributionService.sol +0 -12
  740. package/contracts/instance/service/IPoolService.sol +0 -51
  741. package/contracts/instance/service/IProductService.sol +0 -110
  742. package/contracts/instance/service/PoolService.sol +0 -287
  743. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  744. package/contracts/instance/service/ProductService.sol +0 -570
  745. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  746. package/contracts/shared/ContractDeployerLib.sol +0 -72
  747. package/contracts/shared/ERC165.sol +0 -25
  748. package/contracts/shared/ProxyManager.sol +0 -94
  749. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  750. package/contracts/shared/Versionable.sol +0 -147
  751. package/contracts/test/TestFee.sol +0 -25
  752. package/contracts/test/TestRegisterable.sol +0 -18
  753. package/contracts/test/TestRoleId.sol +0 -14
  754. package/contracts/test/TestService.sol +0 -24
  755. package/contracts/test/TestToken.sol +0 -26
  756. package/contracts/test/TestVersion.sol +0 -44
  757. package/contracts/test/TestVersionable.sol +0 -17
  758. package/contracts/types/ChainId.sol +0 -38
  759. package/contracts/types/Fee.sol +0 -56
  760. package/contracts/types/NumberId.sol +0 -52
  761. package/contracts/types/ObjectType.sol +0 -152
  762. package/contracts/types/RiskId.sol +0 -43
  763. package/contracts/types/RoleId.sol +0 -90
  764. package/contracts/types/UFixed.sol +0 -325
@@ -0,0 +1,115 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IService} from "../shared/IService.sol";
5
+ import {IInstance} from "../instance/IInstance.sol";
6
+
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {Fee} from "../type/Fee.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {InstanceStore} from "../instance/InstanceStore.sol";
12
+ import {Seconds} from "../type/Seconds.sol";
13
+ import {StateId} from "../type/StateId.sol";
14
+ import {Timestamp} from "../type/Timestamp.sol";
15
+
16
+ interface IBundleService is IService {
17
+
18
+ event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId);
19
+ event LogBundleServiceBundleActivated(NftId bundleNftId);
20
+ event LogBundleServiceBundleLocked(NftId bundleNftId);
21
+
22
+ error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, Amount amount);
23
+ error ErrorBundleServiceBundleNotOpen(NftId bundleNftId, StateId state, Timestamp expiredAt);
24
+ error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, Amount capacityAmount, Amount collateralAmount);
25
+ error ErrorBundleServiceBundleWithOpenPolicies(NftId bundleNftId, uint256 openPoliciesCount);
26
+
27
+ error ErrorBundleServiceBundleUnknown(NftId bundleNftId);
28
+ error ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId expectedPool, NftId actualPool);
29
+
30
+ error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
31
+
32
+ error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
33
+
34
+ error ErrorBundleServiceExtensionLifetimeIsZero();
35
+
36
+ event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
37
+
38
+ /// @dev Create a new bundle for the specified attributes.
39
+ function create(
40
+ address owner, // initial bundle owner
41
+ Fee memory fee, // fees deducted from premium that go to bundle owner
42
+ Seconds lifetime, // initial duration for which new policies are covered
43
+ bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
44
+ )
45
+ external
46
+ returns(NftId bundleNftId); // the nft id of the newly created bundle
47
+
48
+
49
+ /// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
50
+ /// may only be called by the pool service
51
+ function stake(
52
+ InstanceReader instanceReader,
53
+ InstanceStore instanceStore,
54
+ NftId bundleNftId,
55
+ Amount amount
56
+ ) external;
57
+
58
+ /// @dev decrease bundle stakes by the specified amount
59
+ /// may only be called by the pool service
60
+ function unstake(InstanceStore instanceStore, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
61
+
62
+ /// @dev extend the lifetime of the bundle by the specified time in seconds
63
+ function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
64
+
65
+ /// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
66
+ /// only active bundles may be locked
67
+ /// may only be called by registered and unlocked pool components
68
+ function lock(NftId bundleNftId) external;
69
+
70
+ /// @dev activates the specified bundle
71
+ /// only locked bundles may be unlocked
72
+ /// may only be called by registered and unlocked pool components
73
+ function unlock(NftId bundleNftId) external;
74
+
75
+ /// @dev closes the specified bundle
76
+ /// only open bundles (active or locked) may be closed
77
+ /// to close a bundle it may not have any non-closed polices attached to it
78
+ /// may only be called by registered and unlocked pool components
79
+ /// @return balanceAmount the unstaked amount that was remaining in the bundle
80
+ /// @return feeAmount the fee amount that was remaining for the bundle
81
+ function close(
82
+ IInstance instance,
83
+ NftId bundleNftId
84
+ ) external returns (Amount balanceAmount, Amount feeAmount);
85
+
86
+ /// @dev set bundle fee to provided value
87
+ /// may only be called by registered and unlocked pool components
88
+ function setFee(
89
+ NftId bundleNftId,
90
+ Fee memory fee
91
+ ) external;
92
+
93
+
94
+ /// @dev locks the specified collateral in the bundle
95
+ /// the locked collateral is added to the bundle locked capital
96
+ /// the bundles' fees are updated with the fees for this premium
97
+ /// the premium (minus bundle fee) is added to the bundle capital
98
+ /// may only be called by pool service
99
+ function lockCollateral(
100
+ IInstance instance,
101
+ NftId policyNftId,
102
+ NftId bundleNftId,
103
+ Amount collateralAmount
104
+ ) external;
105
+
106
+
107
+ /// @dev releases the specified collateral in the bundle
108
+ /// may only be called by pool service
109
+ function releaseCollateral(
110
+ InstanceStore instanceStore,
111
+ NftId policyNftId,
112
+ NftId bundleNftId,
113
+ Amount collateralAmount
114
+ ) external;
115
+ }
@@ -0,0 +1,62 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {ClaimId} from "../type/ClaimId.sol";
6
+ import {Fee} from "../type/Fee.sol";
7
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
+ import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {RoleId} from "../type/RoleId.sol";
11
+ import {Seconds} from "../type/Seconds.sol";
12
+ import {UFixed} from "../type/UFixed.sol";
13
+
14
+ /// @dev pool components hold and manage the collateral to cover active policies
15
+ /// pools come in different flavors
16
+ interface IPoolComponent is IInstanceLinkedComponent {
17
+
18
+ error ErrorPoolNotBundleOwner(NftId bundleNftId, address caller);
19
+ error ErrorPoolNotPoolService(address caller);
20
+ error ErrorPoolApplicationBundleMismatch(NftId applicationNftId);
21
+
22
+ event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
23
+
24
+ /// @dev This is a callback function that is called by the product service when underwriting a policy.
25
+ /// The pool has the option to check the details and object to underwriting by reverting.
26
+ /// The function is only called for "active" pools that ask to be involved/notified.
27
+ /// The default implementation is empty.
28
+ function verifyApplication(
29
+ NftId applicationNftId,
30
+ NftId bundleNftId,
31
+ Amount collateralizationAmount
32
+ ) external;
33
+
34
+ /// @dev Returns true iff the application matches with the bundle.
35
+ /// This is a callback function that is only called if a pool declares itself as a verifying pool
36
+ /// The default implementation returns true.
37
+ function applicationMatchesBundle(
38
+ NftId applicationNftId,
39
+ bytes memory applicationData,
40
+ NftId bundleNftId,
41
+ bytes memory bundleFilter,
42
+ Amount collateralizationAmount
43
+ )
44
+ external
45
+ view
46
+ returns (bool isMatching);
47
+
48
+
49
+ /// @dev This is a callback function that is called by the claim service when a claim is confirmed.
50
+ /// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
51
+ /// The default implementation is empty.
52
+ function processConfirmedClaim(
53
+ NftId policyNftId,
54
+ ClaimId claimId,
55
+ Amount amount
56
+ ) external;
57
+
58
+
59
+ /// @dev Returns initial pool specific infos for this pool
60
+ function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
61
+
62
+ }
@@ -0,0 +1,164 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IInstance} from "../instance/IInstance.sol";
5
+ import {IPolicy} from "../instance/module/IPolicy.sol";
6
+ import {IService} from "../shared/IService.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {ClaimId} from "../type/ClaimId.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {InstanceStore} from "../instance/InstanceStore.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {PayoutId} from "../type/PayoutId.sol";
14
+
15
+ interface IPoolService is IService {
16
+
17
+ event LogPoolServiceMaxBalanceAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
18
+ event LogPoolServiceWalletFunded(NftId poolNftId, address poolOwner, Amount amount);
19
+ event LogPoolServiceWalletDefunded(NftId poolNftId, address poolOwner, Amount amount);
20
+
21
+ event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
22
+ event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
23
+
24
+ event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
25
+ event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
26
+
27
+ event LogPoolServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
28
+
29
+ event LogPoolServiceProcessFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount);
30
+
31
+ error ErrorPoolServicePoolNotExternallyManaged(NftId poolNftId);
32
+ error ErrorPoolServicePolicyPoolMismatch(NftId policyNftId, NftId productNftId, NftId expectedProductNftId);
33
+ error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
34
+ error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
35
+ error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
36
+ error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
37
+ error ErrorPoolServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
38
+
39
+ /// @dev sets the max balance amount for the calling pool
40
+ function setMaxBalanceAmount(Amount maxBalanceAmount) external;
41
+
42
+ /// @dev locks required collateral to cover the specified application (and turn it into a policy)
43
+ /// - retention level == 1: the full collateral amount will be locked by the specified bundle
44
+ /// - retention level < 1: a part of the coverage is provided by the specified bundle, the rest by the pool component
45
+ /// in which case the pool component might hold a re-insurance policy
46
+ /// may only be called by the policy service for unlocked pool components
47
+ function lockCollateral(
48
+ IInstance instance,
49
+ address token,
50
+ NftId productNftId,
51
+ NftId applicationNftId,
52
+ NftId bundleNftId,
53
+ Amount sumInsuredAmount // premium amount after product and distribution fees
54
+ )
55
+ external
56
+ returns (
57
+ Amount localCollateralAmount,
58
+ Amount totalCollateralAmount
59
+ );
60
+
61
+
62
+ /// @dev releases the remaining collateral linked to the specified policy
63
+ /// may only be called by the policy service for unlocked pool components
64
+ function releaseCollateral(
65
+ IInstance instance,
66
+ NftId policyNftId,
67
+ IPolicy.PolicyInfo memory policyInfo
68
+ ) external;
69
+
70
+
71
+ /// @dev reduces the locked collateral in the bundle associated with the specified policy and updates pool/bundle counters
72
+ /// every payout of a policy reduces the collateral by the payout amount
73
+ /// may only be called by the claim service for unlocked pool components
74
+ function processPayout(
75
+ InstanceReader instanceReader,
76
+ InstanceStore instanceStore,
77
+ NftId productNftId,
78
+ NftId policyNftId,
79
+ NftId bundleNftId,
80
+ PayoutId payoutId,
81
+ Amount payoutAmount,
82
+ address payoutBeneficiary
83
+ ) external returns (Amount netPayoutAmount, Amount processingFeeAmount);
84
+
85
+
86
+ /// @dev increase stakes for bundle
87
+ /// staking fees will be deducted by the pool service from the staking amount
88
+ /// may only be called by registered and unlocked pool components
89
+ function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
90
+
91
+
92
+ /// @dev decrease stakes for bundle
93
+ /// performance fees will be deducted by the pool service from the staking amount
94
+ /// may only be called by registered and unlocked pool components
95
+ function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
96
+
97
+
98
+ /// @dev closes the specified bundle
99
+ /// only open bundles (active or locked) may be closed
100
+ /// to close a bundle it may not have any non-closed polices attached to it
101
+ /// bundle fees and remaining capital (after deduction of the performance fee) will be transferred to the bundle owner
102
+ /// may only be called by registered and unlocked pool components
103
+ function closeBundle(NftId bundleNftId) external;
104
+
105
+
106
+ /// @dev Withdraw bundle feeds for the specified bundle.
107
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
108
+
109
+
110
+ /// @dev Informs product about available funds to process a confirmed claim.
111
+ /// The function triggers a callback to the product component when the product's property isProcessingFundedClaims is set.
112
+ function processFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount) external;
113
+
114
+
115
+ /// @dev Fund the pool wallet with the provided amount.
116
+ /// This function will collect the amount from the pool owner and transfers it to the pool wallet.
117
+ /// The function will not update balance amounts managed by the framework.
118
+ /// Only available for externally managed pools.
119
+ function fundPoolWallet(Amount amount) external;
120
+
121
+
122
+ /// @dev Defund the specified pool wallet with the provided amount.
123
+ /// This function will transfer the amount from the pool wallet to the pool owner.
124
+ /// The function will not update balance amounts managed by the framework.
125
+ /// Only available for externally managed pools.
126
+ function defundPoolWallet(Amount amount) external;
127
+
128
+
129
+ /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
130
+ function processSale(NftId bundleNftId, IPolicy.PremiumInfo memory premium) external;
131
+
132
+
133
+ // /// @dev Calulate required collateral for the provided parameters.
134
+ // function calculateRequiredCollateral(
135
+ // InstanceReader instanceReader,
136
+ // NftId productNftId,
137
+ // Amount sumInsuredAmount
138
+ // )
139
+ // external
140
+ // view
141
+ // returns(
142
+ // NftId poolNftId,
143
+ // Amount totalCollateralAmount,
144
+ // Amount localCollateralAmount,
145
+ // bool poolIsVerifyingApplications
146
+ // );
147
+
148
+
149
+ // /// @dev calulate required collateral for the provided parameters.
150
+ // /// Collateralization is applied to sum insured.
151
+ // /// Retention level defines the fraction of the collateral that is required locally.
152
+ // function calculateRequiredCollateral(
153
+ // UFixed collateralizationLevel,
154
+ // UFixed retentionLevel,
155
+ // Amount sumInsuredAmount
156
+ // )
157
+ // external
158
+ // pure
159
+ // returns(
160
+ // Amount totalCollateralAmount,
161
+ // Amount localCollateralAmount
162
+ // );
163
+
164
+ }
@@ -0,0 +1,343 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount, AmountLib} from "../type/Amount.sol";
5
+ import {BUNDLE, COMPONENT, POLICY, POOL} from "../type/ObjectType.sol";
6
+ import {ClaimId} from "../type/ClaimId.sol";
7
+ import {IBundleService} from "./IBundleService.sol";
8
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
9
+ import {IPoolComponent} from "./IPoolComponent.sol";
10
+ import {IPoolService} from "./IPoolService.sol";
11
+ import {IComponents} from "../instance/module/IComponents.sol";
12
+ import {IComponentService} from "../shared/IComponentService.sol";
13
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
14
+ import {InstanceReader} from "../instance/InstanceReader.sol";
15
+ import {Fee} from "../type/Fee.sol";
16
+ import {NftId} from "../type/NftId.sol";
17
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
18
+ import {Seconds} from "../type/Seconds.sol";
19
+ import {Timestamp} from "../type/Timestamp.sol";
20
+ import {UFixed} from "../type/UFixed.sol";
21
+
22
+ abstract contract Pool is
23
+ InstanceLinkedComponent,
24
+ IPoolComponent
25
+ {
26
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Pool")) - 1)) & ~bytes32(uint256(0xff));
27
+ bytes32 public constant POOL_STORAGE_LOCATION_V1 = 0x25e3e51823fbfffb988e0a2744bb93722d9f3e906c07cc0a9e77884c46c58300;
28
+
29
+ struct PoolStorage {
30
+ IComponents.PoolInfo _poolInfo;
31
+ IComponentService _componentService;
32
+ IPoolService _poolService;
33
+ IBundleService _bundleService;
34
+ }
35
+
36
+
37
+ modifier onlyBundleOwner(NftId bundleNftId) {
38
+ if(msg.sender != getRegistry().ownerOf(bundleNftId)) {
39
+ revert ErrorPoolNotBundleOwner(bundleNftId, msg.sender);
40
+ }
41
+ _;
42
+ }
43
+
44
+
45
+ // TODO remove function once this is no longer used to produce contract locations on the fly ...
46
+ function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
47
+ return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
48
+ }
49
+
50
+
51
+ /// @dev see {IPoolComponent.verifyApplication}
52
+ function verifyApplication(
53
+ NftId applicationNftId,
54
+ NftId bundleNftId,
55
+ Amount collateralizationAmount
56
+ )
57
+ public
58
+ virtual
59
+ restricted()
60
+ onlyNftOfType(applicationNftId, POLICY())
61
+ {
62
+ InstanceReader reader = _getInstanceReader();
63
+ if(!applicationMatchesBundle(
64
+ applicationNftId,
65
+ reader.getPolicyInfo(applicationNftId).applicationData,
66
+ bundleNftId,
67
+ reader.getBundleInfo(bundleNftId).filter,
68
+ collateralizationAmount)
69
+ )
70
+ {
71
+ revert ErrorPoolApplicationBundleMismatch(applicationNftId);
72
+ }
73
+
74
+ emit LogPoolVerifiedByPool(address(this), applicationNftId, collateralizationAmount);
75
+ }
76
+
77
+
78
+ /// @dev see {IPoolComponent.processConfirmedClaim}
79
+ function processConfirmedClaim(
80
+ NftId policyNftId,
81
+ ClaimId claimId,
82
+ Amount amount
83
+ )
84
+ public
85
+ virtual
86
+ restricted()
87
+ onlyNftOfType(policyNftId, POLICY())
88
+ {
89
+ // default implementation is empty
90
+ }
91
+
92
+
93
+ /// @dev see {IPoolComponent.applicationMatchesBundle}
94
+ /// Default implementation always returns true.
95
+ /// Override this function to implement any custom application verification.
96
+ /// Calling super.applicationMatchesBundle will ensure validation of application and bundle nft ids.
97
+ function applicationMatchesBundle(
98
+ NftId applicationNftId,
99
+ bytes memory applicationData,
100
+ NftId bundleNftId,
101
+ bytes memory bundleFilter,
102
+ Amount collateralizationAmount
103
+ )
104
+ public
105
+ virtual
106
+ view
107
+ onlyNftOfType(applicationNftId, POLICY())
108
+ onlyNftOfType(bundleNftId, BUNDLE())
109
+ returns (bool isMatching)
110
+ {
111
+ return true;
112
+ }
113
+
114
+
115
+ function getInitialPoolInfo()
116
+ public
117
+ virtual
118
+ view
119
+ returns (IComponents.PoolInfo memory poolInfo)
120
+ {
121
+ return _getPoolStorage()._poolInfo;
122
+ }
123
+
124
+ // Internals
125
+
126
+ function _initializePool(
127
+ address registry,
128
+ NftId productNftId,
129
+ string memory name,
130
+ IComponents.PoolInfo memory poolInfo,
131
+ IAuthorization authorization,
132
+ address initialOwner,
133
+ bytes memory componentData // component specifidc data
134
+ )
135
+ internal
136
+ virtual
137
+ onlyInitializing()
138
+ {
139
+ _initializeInstanceLinkedComponent(
140
+ registry,
141
+ productNftId,
142
+ name,
143
+ POOL(),
144
+ authorization,
145
+ poolInfo.isInterceptingBundleTransfers,
146
+ initialOwner,
147
+ componentData);
148
+
149
+ PoolStorage storage $ = _getPoolStorage();
150
+
151
+ $._poolInfo = poolInfo;
152
+ $._poolService = IPoolService(_getServiceAddress(POOL()));
153
+ $._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
154
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
155
+
156
+ _registerInterface(type(IPoolComponent).interfaceId);
157
+ }
158
+
159
+
160
+ /// @dev Update pool fees to the specified values.
161
+ /// Pool fee: are deducted from the premium amount and goes to the pool owner.
162
+ /// Staking fee: are deducted from the staked tokens by a bundle owner and goes to the pool owner.
163
+ /// Performance fee: when a bundle is closed a bundle specific profit is calculated.
164
+ /// The performance fee is deducted from this profit and goes to the pool owner.
165
+ function _setPoolFees(
166
+ Fee memory poolFee,
167
+ Fee memory stakingFee,
168
+ Fee memory performanceFee
169
+ )
170
+ internal
171
+ virtual
172
+ {
173
+ _getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
174
+ }
175
+
176
+
177
+ /// @dev Sets the maximum balance amound held by this pool.
178
+ /// Function may only be called by pool owner.
179
+ function _setMaxBalanceAmount(Amount maxBalanceAmount)
180
+ internal
181
+ virtual
182
+ {
183
+ _getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
184
+ }
185
+
186
+
187
+ /// @dev Fund the pool wallet with the specified amount.
188
+ /// Function is only available for externally managed pools.
189
+ function _fundPoolWallet(Amount amount)
190
+ internal
191
+ virtual
192
+ {
193
+ _getPoolStorage()._poolService.fundPoolWallet(amount);
194
+ }
195
+
196
+
197
+ /// @dev Withdraw the specified amount from the pool wallet.
198
+ /// Function is only available for externally managed pools.
199
+ function _defundPoolWallet(Amount amount)
200
+ internal
201
+ virtual
202
+ {
203
+ _getPoolStorage()._poolService.defundPoolWallet(amount);
204
+ }
205
+
206
+
207
+ /// @dev Creates a new empty bundle using the provided parameter values.
208
+ function _createBundle(
209
+ address bundleOwner,
210
+ Fee memory fee,
211
+ Seconds lifetime,
212
+ bytes memory filter
213
+ )
214
+ internal
215
+ returns(NftId bundleNftId)
216
+ {
217
+ bundleNftId = _getPoolStorage()._bundleService.create(
218
+ bundleOwner,
219
+ fee,
220
+ lifetime,
221
+ filter);
222
+
223
+ // TODO add logging
224
+ }
225
+
226
+
227
+ /// @dev Sets the fee for the specified bundle.
228
+ /// The fee is added on top of the poolFee and deducted from the premium amounts
229
+ /// Via these fees individual bundler owner may earn income per policy in the context of peer to peer pools.
230
+ function _setBundleFee(
231
+ NftId bundleNftId,
232
+ Fee memory fee
233
+ )
234
+ internal
235
+ virtual
236
+ {
237
+ _getPoolStorage()._bundleService.setFee(bundleNftId, fee);
238
+ }
239
+
240
+
241
+ /// @dev increases the staked tokens by the specified amount
242
+ /// bundle MUST be in active or locked state
243
+ function _stake(
244
+ NftId bundleNftId,
245
+ Amount amount
246
+ )
247
+ internal
248
+ virtual
249
+ returns(Amount)
250
+ {
251
+ return _getPoolStorage()._poolService.stake(bundleNftId, amount);
252
+ }
253
+
254
+
255
+ /// @dev decreases the staked tokens by the specified amount
256
+ /// bundle MUST be in active, locked or closed state
257
+ function _unstake(
258
+ NftId bundleNftId,
259
+ Amount amount
260
+ )
261
+ internal
262
+ virtual
263
+ returns(Amount netAmount)
264
+ {
265
+ return _getPoolStorage()._poolService.unstake(bundleNftId, amount);
266
+ }
267
+
268
+
269
+ /// @dev extends the bundle lifetime of the bundle by the specified time
270
+ /// bundle MUST be in active or locked state
271
+ function _extend(
272
+ NftId bundleNftId,
273
+ Seconds lifetimeExtension
274
+ )
275
+ internal
276
+ virtual
277
+ returns (Timestamp extendedExpiredAt)
278
+ {
279
+ return _getPoolStorage()._bundleService.extend(bundleNftId, lifetimeExtension);
280
+ }
281
+
282
+
283
+ /// @dev Locks the specified bundle.
284
+ /// A bundle to be locked MUST be in active state.
285
+ /// Locked bundles may not be used to collateralize any new policy.
286
+ function _lockBundle(NftId bundleNftId)
287
+ internal
288
+ virtual
289
+ {
290
+ _getPoolStorage()._bundleService.lock(bundleNftId);
291
+ }
292
+
293
+
294
+ /// @dev Unlocks the specified bundle.
295
+ /// A bundle to be unlocked MUST be in locked state.
296
+ function _unlockBundle(NftId bundleNftId)
297
+ internal
298
+ virtual
299
+ {
300
+ _getPoolStorage()._bundleService.unlock(bundleNftId);
301
+ }
302
+
303
+
304
+ /// @dev Close the specified bundle.
305
+ /// A bundle to be closed MUST be in active or locked state.
306
+ /// To close a bundle all all linked policies MUST be in closed state as well.
307
+ /// Closing a bundle finalizes the bundle bookkeeping including overall profit calculation.
308
+ /// Once a bundle is closed this action cannot be reversed.
309
+ function _closeBundle(NftId bundleNftId)
310
+ internal
311
+ virtual
312
+ {
313
+ _getPoolStorage()._poolService.closeBundle(bundleNftId);
314
+ }
315
+
316
+
317
+ /// @dev Withdraws the specified amount of fees from the bundle.
318
+ function _withdrawBundleFees(NftId bundleNftId, Amount amount)
319
+ internal
320
+ returns (Amount withdrawnAmount)
321
+ {
322
+ return _getPoolStorage()._poolService.withdrawBundleFees(bundleNftId, amount);
323
+ }
324
+
325
+
326
+ function _processFundedClaim(
327
+ NftId policyNftId,
328
+ ClaimId claimId,
329
+ Amount availableAmount
330
+ )
331
+ internal
332
+ {
333
+ _getPoolStorage()._poolService.processFundedClaim(
334
+ policyNftId, claimId, availableAmount);
335
+ }
336
+
337
+
338
+ function _getPoolStorage() private pure returns (PoolStorage storage $) {
339
+ assembly {
340
+ $.slot := POOL_STORAGE_LOCATION_V1
341
+ }
342
+ }
343
+ }