@etherisc/gif-next 0.0.2-e9a637d-547 → 0.0.2-e9c5694-914

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 (673) hide show
  1. package/README.md +57 -17
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1402 -0
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  25. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +272 -553
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1455 -0
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +838 -0
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  31. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +252 -292
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +207 -336
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +201 -100
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +168 -120
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +209 -229
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1653 -0
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1078 -309
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +230 -443
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +140 -163
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1535 -534
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  84. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  90. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  91. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  92. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  93. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  94. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1039 -0
  95. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  96. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  97. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  98. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  99. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  100. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +231 -273
  101. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  102. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → oracle/IOracleService.sol/IOracleService.json} +281 -231
  103. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  104. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +907 -0
  105. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  106. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +966 -0
  107. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +722 -0
  109. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  110. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +337 -414
  111. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  112. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
  113. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  114. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1465 -0
  115. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  116. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +834 -0
  117. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  118. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → pool/IBundleService.sol/IBundleService.json} +420 -304
  119. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  120. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +960 -0
  121. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  122. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1283 -0
  123. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  124. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → pool/Pool.sol/Pool.json} +411 -377
  125. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  126. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1625 -0
  127. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  128. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +766 -0
  129. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  130. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +771 -0
  131. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  132. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +710 -0
  133. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  134. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +423 -417
  135. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  136. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  137. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  138. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1431 -0
  139. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  140. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +838 -0
  141. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  142. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +91 -167
  143. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  144. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -0
  145. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  146. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +925 -0
  147. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  148. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IPricingService.sol/IPricingService.json} +201 -229
  149. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1012 -0
  151. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  152. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +41 -62
  153. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1302 -0
  155. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  156. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +782 -0
  157. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  158. package/artifacts/contracts/product/PricingService.sol/PricingService.json +907 -0
  159. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +762 -0
  161. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  162. package/artifacts/contracts/product/Product.sol/Product.json +1131 -0
  163. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  164. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  165. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  166. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  167. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  169. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +435 -29
  171. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +263 -110
  173. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  175. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/Registry.sol/Registry.json +865 -68
  177. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  178. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1886 -0
  179. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  180. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +333 -245
  181. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +138 -95
  183. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  184. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  185. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  186. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  187. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  188. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  189. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  191. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  192. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/Component.sol/Component.json} +314 -196
  193. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  194. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1768 -0
  195. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  196. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +814 -0
  197. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  198. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +124 -125
  199. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  200. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  201. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  202. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +142 -115
  203. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1335 -0
  205. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  206. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +723 -0
  207. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  208. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  209. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  210. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  211. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -10
  213. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  215. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +28 -6
  217. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  219. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IService.sol/IService.json +46 -6
  221. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  222. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  223. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  224. package/artifacts/contracts/{components/Component.sol/Component.json → shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json} +239 -252
  225. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  226. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  227. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  228. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  229. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  230. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  231. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +28 -70
  233. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  235. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +69 -99
  237. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  238. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  239. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  240. package/artifacts/contracts/shared/Service.sol/Service.json +58 -112
  241. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  242. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  243. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  244. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  245. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  246. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1465 -0
  247. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  248. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  249. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  250. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  251. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  252. package/artifacts/contracts/staking/Staking.sol/Staking.json +1888 -0
  253. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  254. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  255. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  256. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +776 -0
  257. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  258. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  259. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  260. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1249 -0
  261. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  262. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +710 -0
  263. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  264. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  265. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  266. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  267. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  268. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  269. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  270. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  271. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  272. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  273. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  274. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  275. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  276. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  277. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  278. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  279. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  280. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  281. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  282. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  283. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  284. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  285. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  286. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  287. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  288. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  289. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  291. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  292. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  293. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  294. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  295. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  296. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  297. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  298. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  299. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  300. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  301. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  302. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  303. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  304. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  305. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  306. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  307. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  308. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  309. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  310. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  311. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  312. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  313. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  314. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  315. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  316. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  317. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  318. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  319. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  320. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  321. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  322. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  323. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  324. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  325. package/contracts/authorization/AccessAdmin.sol +596 -0
  326. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  327. package/contracts/authorization/Authorization.sol +289 -0
  328. package/contracts/authorization/IAccess.sol +49 -0
  329. package/contracts/authorization/IAccessAdmin.sol +137 -0
  330. package/contracts/authorization/IAuthorization.sol +60 -0
  331. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  332. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  333. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  334. package/contracts/distribution/BasicDistribution.sol +139 -0
  335. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  336. package/contracts/{components → distribution}/Distribution.sol +170 -165
  337. package/contracts/distribution/DistributionService.sol +355 -0
  338. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  339. package/contracts/distribution/IDistributionComponent.sol +52 -0
  340. package/contracts/{instance/service → distribution}/IDistributionService.sol +40 -38
  341. package/contracts/examples/fire/DamageLevel.sol +59 -0
  342. package/contracts/examples/fire/FirePool.sol +73 -0
  343. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  344. package/contracts/examples/fire/FireProduct.sol +415 -0
  345. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  346. package/contracts/examples/fire/FireUSD.sol +26 -0
  347. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  348. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  349. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  350. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  351. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +30 -31
  352. package/contracts/instance/IInstance.sol +40 -34
  353. package/contracts/instance/IInstanceService.sol +35 -47
  354. package/contracts/instance/Instance.sol +136 -103
  355. package/contracts/instance/InstanceAdmin.sol +277 -0
  356. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  357. package/contracts/instance/InstanceReader.sol +261 -59
  358. package/contracts/instance/InstanceService.sol +244 -361
  359. package/contracts/instance/InstanceServiceManager.sol +14 -29
  360. package/contracts/instance/InstanceStore.sol +165 -97
  361. package/contracts/instance/base/BalanceStore.sol +123 -0
  362. package/contracts/instance/base/Cloneable.sol +28 -0
  363. package/contracts/instance/base/ObjectCounter.sol +21 -0
  364. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  365. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  366. package/contracts/instance/module/IAccess.sol +4 -12
  367. package/contracts/instance/module/IBundle.sol +6 -9
  368. package/contracts/instance/module/IComponents.sol +26 -16
  369. package/contracts/instance/module/IDistribution.sol +6 -6
  370. package/contracts/instance/module/IPolicy.sol +47 -35
  371. package/contracts/instance/module/IRisk.sol +1 -1
  372. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  373. package/contracts/oracle/BasicOracle.sol +47 -0
  374. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  375. package/contracts/oracle/IOracle.sol +36 -0
  376. package/contracts/oracle/IOracleComponent.sol +33 -0
  377. package/contracts/oracle/IOracleService.sol +66 -0
  378. package/contracts/oracle/Oracle.sol +156 -0
  379. package/contracts/oracle/OracleService.sol +291 -0
  380. package/contracts/oracle/OracleServiceManager.sol +39 -0
  381. package/contracts/pool/BasicPool.sol +154 -0
  382. package/contracts/pool/BasicPoolAuthorization.sol +57 -0
  383. package/contracts/pool/BundleService.sol +493 -0
  384. package/contracts/pool/BundleServiceManager.sol +39 -0
  385. package/contracts/pool/IBundleService.sol +143 -0
  386. package/contracts/pool/IPoolComponent.sol +68 -0
  387. package/contracts/pool/IPoolService.sol +167 -0
  388. package/contracts/pool/Pool.sol +335 -0
  389. package/contracts/pool/PoolService.sol +544 -0
  390. package/contracts/pool/PoolServiceManager.sol +39 -0
  391. package/contracts/product/ApplicationService.sol +259 -0
  392. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  393. package/contracts/product/BasicProduct.sol +53 -0
  394. package/contracts/product/BasicProductAuthorization.sol +42 -0
  395. package/contracts/product/ClaimService.sol +612 -0
  396. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  397. package/contracts/{instance/service → product}/IApplicationService.sol +16 -35
  398. package/contracts/product/IClaimService.sol +123 -0
  399. package/contracts/product/IPolicyService.sol +80 -0
  400. package/contracts/product/IPricingService.sol +39 -0
  401. package/contracts/product/IProductComponent.sol +59 -0
  402. package/contracts/product/IRiskService.sol +33 -0
  403. package/contracts/product/PolicyService.sol +691 -0
  404. package/contracts/product/PolicyServiceManager.sol +39 -0
  405. package/contracts/product/PricingService.sol +300 -0
  406. package/contracts/product/PricingServiceManager.sol +39 -0
  407. package/contracts/product/Product.sol +455 -0
  408. package/contracts/product/RiskService.sol +96 -0
  409. package/contracts/product/RiskServiceManager.sol +39 -0
  410. package/contracts/registry/ChainNft.sol +75 -38
  411. package/contracts/registry/IRegistry.sol +96 -26
  412. package/contracts/registry/IRegistryService.sol +34 -40
  413. package/contracts/registry/ITransferInterceptor.sol +1 -2
  414. package/contracts/registry/Registry.sol +445 -195
  415. package/contracts/registry/RegistryAdmin.sol +448 -0
  416. package/contracts/registry/RegistryService.sol +87 -128
  417. package/contracts/registry/RegistryServiceManager.sol +23 -32
  418. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  419. package/contracts/registry/ReleaseRegistry.sol +501 -0
  420. package/contracts/registry/ServiceAuthorizationV3.sol +194 -0
  421. package/contracts/registry/TokenRegistry.sol +261 -62
  422. package/contracts/shared/Component.sol +265 -0
  423. package/contracts/shared/ComponentService.sol +745 -0
  424. package/contracts/shared/ComponentServiceManager.sol +38 -0
  425. package/contracts/shared/ComponentVerifyingService.sol +126 -0
  426. package/contracts/shared/ContractLib.sol +38 -0
  427. package/contracts/shared/IComponent.sol +74 -0
  428. package/contracts/shared/IComponentService.sol +120 -0
  429. package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
  430. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  431. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  432. package/contracts/shared/INftOwnable.sol +4 -2
  433. package/contracts/shared/IPolicyHolder.sol +23 -14
  434. package/contracts/shared/IRegisterable.sol +11 -0
  435. package/contracts/shared/IRegistryLinked.sol +0 -1
  436. package/contracts/shared/IService.sol +12 -3
  437. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  438. package/contracts/shared/InstanceLinkedComponent.sol +213 -0
  439. package/contracts/shared/KeyValueStore.sol +131 -0
  440. package/contracts/shared/Lifecycle.sol +88 -0
  441. package/contracts/shared/NftIdSet.sol +65 -0
  442. package/contracts/shared/NftOwnable.sol +32 -25
  443. package/contracts/shared/PolicyHolder.sol +22 -41
  444. package/contracts/shared/Registerable.sol +32 -21
  445. package/contracts/shared/RegistryLinked.sol +3 -7
  446. package/contracts/shared/Service.sol +48 -36
  447. package/contracts/shared/TokenHandler.sol +115 -9
  448. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  449. package/contracts/staking/IStaking.sol +168 -0
  450. package/contracts/staking/IStakingService.sol +157 -0
  451. package/contracts/staking/StakeManagerLib.sol +224 -0
  452. package/contracts/staking/Staking.sol +497 -0
  453. package/contracts/staking/StakingLifecycle.sol +23 -0
  454. package/contracts/staking/StakingManager.sol +52 -0
  455. package/contracts/staking/StakingReader.sol +190 -0
  456. package/contracts/staking/StakingService.sol +407 -0
  457. package/contracts/staking/StakingServiceManager.sol +44 -0
  458. package/contracts/staking/StakingStore.sol +605 -0
  459. package/contracts/staking/TargetManagerLib.sol +211 -0
  460. package/contracts/{types → type}/AddressSet.sol +1 -1
  461. package/contracts/type/Amount.sol +150 -0
  462. package/contracts/{types → type}/Blocknumber.sol +26 -3
  463. package/contracts/{types → type}/ClaimId.sol +31 -3
  464. package/contracts/{types → type}/Fee.sol +24 -22
  465. package/contracts/{types → type}/NftId.sol +15 -16
  466. package/contracts/{types → type}/NftIdSet.sol +2 -2
  467. package/contracts/type/ObjectType.sol +276 -0
  468. package/contracts/type/PayoutId.sol +82 -0
  469. package/contracts/{types → type}/Referral.sol +2 -1
  470. package/contracts/type/RequestId.sol +75 -0
  471. package/contracts/{types → type}/RiskId.sol +16 -2
  472. package/contracts/type/RoleId.sol +162 -0
  473. package/contracts/type/Seconds.sol +101 -0
  474. package/contracts/type/Selector.sol +102 -0
  475. package/contracts/{types → type}/StateId.sol +47 -4
  476. package/contracts/type/String.sol +53 -0
  477. package/contracts/{types → type}/Timestamp.sol +21 -2
  478. package/contracts/{types → type}/UFixed.sol +38 -9
  479. package/contracts/{types → type}/Version.sol +4 -2
  480. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  481. package/contracts/{shared → upgradeability}/ProxyManager.sol +93 -30
  482. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  483. package/contracts/{shared → upgradeability}/Versionable.sol +3 -3
  484. package/package.json +9 -5
  485. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  486. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  487. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  488. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  489. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  490. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  491. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  492. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  493. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  494. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  495. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  496. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  497. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  498. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  499. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  500. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  501. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  502. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  503. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  504. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  505. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  506. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  507. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  508. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  509. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  510. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  511. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  512. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  514. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  515. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  516. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  517. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  518. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  519. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  520. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  522. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  523. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  524. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  525. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  526. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  528. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  537. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  539. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  541. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  543. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  545. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  546. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  547. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  548. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  549. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  550. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  551. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  552. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  553. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  554. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  555. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  556. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  558. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  560. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  561. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  562. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  563. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  564. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  565. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  566. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  567. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  568. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  569. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  570. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  571. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  572. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  573. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  574. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  575. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  576. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  577. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  578. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  579. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  581. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  582. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  583. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  585. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  587. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  588. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  589. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  590. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  591. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  592. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  593. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  594. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  595. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  596. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  597. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  598. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  599. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  601. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  603. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  605. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  607. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  609. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  611. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  612. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  613. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  615. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  616. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  617. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  618. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  619. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  621. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  623. package/contracts/components/Component.sol +0 -253
  624. package/contracts/components/IComponent.sol +0 -76
  625. package/contracts/components/IDistributionComponent.sol +0 -71
  626. package/contracts/components/IPoolComponent.sol +0 -113
  627. package/contracts/components/IProductComponent.sol +0 -40
  628. package/contracts/components/Pool.sol +0 -303
  629. package/contracts/components/Product.sol +0 -293
  630. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  631. package/contracts/instance/Cloneable.sol +0 -51
  632. package/contracts/instance/InstanceAccessManager.sol +0 -540
  633. package/contracts/instance/base/ComponentService.sol +0 -121
  634. package/contracts/instance/base/KeyValueStore.sol +0 -180
  635. package/contracts/instance/base/Lifecycle.sol +0 -109
  636. package/contracts/instance/module/ISetup.sol +0 -33
  637. package/contracts/instance/module/ITreasury.sol +0 -23
  638. package/contracts/instance/service/ApplicationService.sol +0 -351
  639. package/contracts/instance/service/BundleService.sol +0 -431
  640. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  641. package/contracts/instance/service/ClaimService.sol +0 -151
  642. package/contracts/instance/service/DistributionService.sol +0 -437
  643. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  644. package/contracts/instance/service/IBundleService.sol +0 -93
  645. package/contracts/instance/service/IClaimService.sol +0 -61
  646. package/contracts/instance/service/IPolicyService.sol +0 -72
  647. package/contracts/instance/service/IPoolService.sol +0 -99
  648. package/contracts/instance/service/IProductService.sol +0 -40
  649. package/contracts/instance/service/PolicyService.sol +0 -362
  650. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  651. package/contracts/instance/service/PoolService.sol +0 -303
  652. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  653. package/contracts/instance/service/ProductService.sol +0 -209
  654. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  655. package/contracts/registry/RegistryAccessManager.sol +0 -216
  656. package/contracts/registry/ReleaseManager.sol +0 -324
  657. package/contracts/shared/ContractDeployerLib.sol +0 -72
  658. package/contracts/test/TestFee.sol +0 -25
  659. package/contracts/test/TestRegisterable.sol +0 -18
  660. package/contracts/test/TestRoleId.sol +0 -14
  661. package/contracts/test/TestService.sol +0 -25
  662. package/contracts/test/TestToken.sol +0 -26
  663. package/contracts/test/TestVersion.sol +0 -44
  664. package/contracts/test/TestVersionable.sol +0 -17
  665. package/contracts/types/Amount.sol +0 -60
  666. package/contracts/types/ChainId.sol +0 -38
  667. package/contracts/types/NumberId.sol +0 -52
  668. package/contracts/types/ObjectType.sol +0 -157
  669. package/contracts/types/PayoutId.sol +0 -54
  670. package/contracts/types/RoleId.sol +0 -97
  671. package/contracts/types/Seconds.sol +0 -54
  672. /package/contracts/{types → type}/DistributorType.sol +0 -0
  673. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,57 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Authorization} from "../authorization/Authorization.sol";
5
+ import {BasicPool} from "./BasicPool.sol";
6
+ import {IAccess} from "../authorization/IAccess.sol";
7
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
+ import {IPoolComponent} from "./IPoolComponent.sol";
9
+ import {POOL} from "../type/ObjectType.sol";
10
+ import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
11
+ import {RoleId} from "../type/RoleId.sol";
12
+
13
+
14
+ contract BasicPoolAuthorization
15
+ is Authorization
16
+ {
17
+
18
+ constructor(string memory poolName)
19
+ Authorization(poolName)
20
+ {}
21
+
22
+ function _setupTargets()
23
+ internal
24
+ virtual override
25
+ {
26
+ _addComponentTargetWithRole(POOL()); // basic pool target
27
+ }
28
+
29
+
30
+ function _setupTargetAuthorizations()
31
+ internal
32
+ virtual override
33
+ {
34
+ IAccess.FunctionInfo[] storage functions;
35
+
36
+ // authorize public role (open access to any account, only allows to lock target)
37
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
38
+ _authorize(functions, BasicPool.stake.selector, "stake");
39
+ _authorize(functions, BasicPool.unstake.selector, "unstake");
40
+ _authorize(functions, BasicPool.extend.selector, "extend");
41
+ _authorize(functions, BasicPool.lockBundle.selector, "lockBundle");
42
+ _authorize(functions, BasicPool.unlockBundle.selector, "unlockBundle");
43
+ _authorize(functions, BasicPool.closeBundle.selector, "closeBundle");
44
+ _authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
45
+
46
+ _authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
47
+ _authorize(functions, BasicPool.setFees.selector, "setFees");
48
+ _authorize(functions, BasicPool.stake.selector, "stake");
49
+ _authorize(functions, BasicPool.unstake.selector, "unstake");
50
+ _authorize(functions, BasicPool.extend.selector, "extend");
51
+
52
+ _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
53
+
54
+ _authorize(functions, IPoolComponent.withdrawBundleFees.selector, "withdrawBundleFees");
55
+ }
56
+ }
57
+
@@ -0,0 +1,493 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IBundleService} from "./IBundleService.sol";
6
+ import {IComponents} from "../instance/module/IComponents.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IRegistryService} from "../registry/IRegistryService.sol";
10
+ import {IInstance} from "../instance/IInstance.sol";
11
+ import {InstanceStore} from "../instance/InstanceStore.sol";
12
+ import {IPolicy} from "../instance/module/IPolicy.sol";
13
+
14
+ import {Amount, AmountLib} from "../type/Amount.sol";
15
+ import {BundleSet} from "../instance/BundleSet.sol";
16
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
17
+ import {Fee} from "../type/Fee.sol";
18
+ import {InstanceReader} from "../instance/InstanceReader.sol";
19
+ import {NftId, NftIdLib} from "../type/NftId.sol";
20
+ import {ObjectType, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
21
+ import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
22
+ import {Seconds} from "../type/Seconds.sol";
23
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
24
+
25
+ string constant BUNDLE_SERVICE_NAME = "BundleService";
26
+
27
+ contract BundleService is
28
+ ComponentVerifyingService,
29
+ IBundleService
30
+ {
31
+
32
+ string public constant NAME = "BundleService";
33
+
34
+ address private _registryAddress;
35
+ IRegistryService private _registryService;
36
+ IComponentService private _componentService;
37
+
38
+ function _initialize(
39
+ address owner,
40
+ bytes memory data
41
+ )
42
+ internal
43
+ virtual override
44
+ initializer()
45
+ {
46
+ (
47
+ address registryAddress,
48
+ address authority
49
+ ) = abi.decode(data, (address, address));
50
+
51
+ _initializeService(registryAddress, authority, owner);
52
+
53
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
54
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
55
+
56
+ _registerInterface(type(IBundleService).interfaceId);
57
+ }
58
+
59
+
60
+ function setFee(
61
+ NftId bundleNftId,
62
+ Fee memory fee
63
+ )
64
+ external
65
+ virtual
66
+ {
67
+ _checkNftType(bundleNftId, BUNDLE());
68
+
69
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
70
+ InstanceReader instanceReader = instance.getInstanceReader();
71
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
72
+ if(bundleInfo.poolNftId.eqz()) {
73
+ revert ErrorBundleServiceBundleUnknown(bundleNftId);
74
+ }
75
+
76
+ if(bundleInfo.poolNftId != poolNftId) {
77
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
78
+ }
79
+
80
+ bundleInfo.fee = fee;
81
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
82
+ }
83
+
84
+
85
+ function create(
86
+ IInstance instance,
87
+ NftId poolNftId,
88
+ address owner,
89
+ Fee memory bundleFee,
90
+ Amount stakingAmount,
91
+ Seconds lifetime,
92
+ bytes calldata filter
93
+ )
94
+ external
95
+ override
96
+ restricted
97
+ returns(NftId bundleNftId)
98
+ {
99
+ _checkNftType(poolNftId, POOL());
100
+
101
+ // register bundle with registry
102
+ bundleNftId = _registryService.registerBundle(
103
+ IRegistry.ObjectInfo(
104
+ NftIdLib.zero(),
105
+ poolNftId,
106
+ BUNDLE(),
107
+ false, // intercepting property for bundles is defined on pool
108
+ address(0),
109
+ owner,
110
+ "" // bundle data to be stored in registry
111
+ )
112
+ );
113
+
114
+ // create bundle info in instance
115
+ InstanceStore instanceStore = instance.getInstanceStore();
116
+ instanceStore.createBundle(
117
+ bundleNftId,
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
+ );
127
+
128
+ if (stakingAmount.gtz()) {
129
+ // bundle book keeping
130
+ _componentService.increaseBundleBalance(
131
+ instanceStore,
132
+ bundleNftId,
133
+ stakingAmount,
134
+ AmountLib.zero()); // fee amount
135
+ }
136
+
137
+ // put bundle under bundle managemet
138
+ BundleSet bundleManager = instance.getBundleSet();
139
+ bundleManager.add(bundleNftId);
140
+ // TODO add logging
141
+ }
142
+
143
+
144
+ // the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
145
+ function lockCollateral(
146
+ IInstance instance,
147
+ NftId policyNftId,
148
+ NftId bundleNftId,
149
+ Amount collateralAmount // required local amount to collateralize policy
150
+ )
151
+ external
152
+ virtual
153
+ restricted()
154
+ {
155
+ _checkNftType(policyNftId, POLICY());
156
+ _checkNftType(bundleNftId, BUNDLE());
157
+
158
+ InstanceReader instanceReader = instance.getInstanceReader();
159
+
160
+ {
161
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
162
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
163
+
164
+ // ensure bundle is active and not yet expired
165
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
166
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
167
+ }
168
+ }
169
+
170
+ InstanceStore instanceStore = instance.getInstanceStore();
171
+
172
+ {
173
+ // ensure bundle capacity is sufficent to collateralize policy
174
+ (
175
+ Amount balanceAmount,
176
+ Amount lockedAmount,
177
+ Amount feeAmount
178
+ ) = instanceStore.getAmounts(bundleNftId);
179
+
180
+ Amount capacity = balanceAmount - (lockedAmount + feeAmount);
181
+ if(capacity < collateralAmount) {
182
+ revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
183
+ }
184
+ }
185
+
186
+ // updated locked amount
187
+ instanceStore.increaseLocked(bundleNftId, collateralAmount);
188
+
189
+ // link policy to bundle in bundle manger
190
+ _linkPolicy(instance, policyNftId);
191
+ }
192
+
193
+
194
+ function lock(NftId bundleNftId)
195
+ external
196
+ virtual
197
+ {
198
+ _checkNftType(bundleNftId, BUNDLE());
199
+
200
+ (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
201
+
202
+ // udpate bundle state
203
+ instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
204
+
205
+ // update set of active bundles
206
+ BundleSet bundleManager = instance.getBundleSet();
207
+ bundleManager.lock(bundleNftId);
208
+
209
+ emit LogBundleServiceBundleLocked(bundleNftId);
210
+ }
211
+
212
+
213
+ function unlock(NftId bundleNftId)
214
+ external
215
+ virtual
216
+ {
217
+ _checkNftType(bundleNftId, BUNDLE());
218
+
219
+ (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
220
+
221
+ // udpate bundle state
222
+ instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
223
+
224
+ // update set of active bundles
225
+ BundleSet bundleManager = instance.getBundleSet();
226
+ bundleManager.unlock(bundleNftId);
227
+
228
+ emit LogBundleServiceBundleActivated(bundleNftId);
229
+ }
230
+
231
+
232
+ function close(
233
+ IInstance instance,
234
+ NftId bundleNftId
235
+ )
236
+ external
237
+ virtual
238
+ restricted
239
+ returns (Amount unstakedAmount, Amount feeAmount)
240
+ {
241
+ _checkNftType(bundleNftId, BUNDLE());
242
+
243
+ InstanceReader instanceReader = instance.getInstanceReader();
244
+
245
+ // ensure no open policies attached to bundle
246
+ BundleSet bundleManager = instance.getBundleSet();
247
+ uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
248
+ if(openPolicies > 0) {
249
+ revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
250
+ }
251
+
252
+ {
253
+ // update bundle state
254
+ InstanceStore instanceStore = instance.getInstanceStore();
255
+ instanceStore.updateBundleState(bundleNftId, CLOSED());
256
+ bundleManager.lock(bundleNftId);
257
+
258
+ // decrease bundle counters
259
+ Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
260
+ feeAmount = instanceReader.getFeeAmount(bundleNftId);
261
+ unstakedAmount = balanceAmountWithFees - feeAmount;
262
+ _componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
263
+ }
264
+ }
265
+
266
+ /// @inheritdoc IBundleService
267
+ function stake(
268
+ IInstance instance,
269
+ NftId bundleNftId,
270
+ Amount amount
271
+ )
272
+ external
273
+ virtual
274
+ // TODO: restricted() (once #462 is done)
275
+ {
276
+ _checkNftType(bundleNftId, BUNDLE());
277
+
278
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
279
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
280
+
281
+ if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
282
+ || bundleInfo.expiredAt < TimestampLib.blockTimestamp()
283
+ || bundleInfo.closedAt.gtz()) {
284
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
285
+ }
286
+
287
+ _componentService.increaseBundleBalance(
288
+ instance.getInstanceStore(),
289
+ bundleNftId,
290
+ amount,
291
+ AmountLib.zero());
292
+ }
293
+
294
+ /// @inheritdoc IBundleService
295
+ function unstake(
296
+ IInstance instance,
297
+ NftId bundleNftId,
298
+ Amount amount
299
+ )
300
+ external
301
+ virtual
302
+ // TODO: restricted() (once #462 is done)
303
+ returns (Amount unstakedAmount)
304
+ {
305
+ _checkNftType(bundleNftId, BUNDLE());
306
+
307
+ InstanceStore instanceStore = instance.getInstanceStore();
308
+ (
309
+ Amount balanceAmount,
310
+ Amount lockedAmount,
311
+ Amount feeAmount
312
+ ) = instanceStore.getAmounts(bundleNftId);
313
+
314
+ unstakedAmount = amount;
315
+ Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
316
+
317
+ // if amount is max, then unstake all available
318
+ if (amount.gte(AmountLib.max())) {
319
+ unstakedAmount = availableAmount;
320
+ }
321
+
322
+ // ensure unstaked amount does not exceed available amount
323
+ if (unstakedAmount > availableAmount) {
324
+ revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
325
+ }
326
+
327
+ _componentService.decreaseBundleBalance(
328
+ instanceStore,
329
+ bundleNftId,
330
+ unstakedAmount,
331
+ AmountLib.zero());
332
+ }
333
+
334
+ /// @inheritdoc IBundleService
335
+ function extend(NftId bundleNftId, Seconds lifetimeExtension)
336
+ external
337
+ virtual
338
+ // TODO: restricted() (once #462 is done)
339
+ returns (Timestamp extendedExpiredAt)
340
+ {
341
+ _checkNftType(bundleNftId, BUNDLE());
342
+
343
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
344
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
345
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
346
+
347
+ // ensure bundle belongs to the pool
348
+ if (bundleInfo.poolNftId != poolNftId) {
349
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
350
+ }
351
+
352
+ // ensure bundle is active and not yet expired
353
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
354
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
355
+ }
356
+
357
+ if (lifetimeExtension.eqz()) {
358
+ revert ErrorBundleServiceExtensionLifetimeIsZero();
359
+ }
360
+
361
+ bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
362
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
363
+
364
+ emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
365
+
366
+ return bundleInfo.expiredAt;
367
+ }
368
+
369
+
370
+ function releaseCollateral(
371
+ IInstance instance,
372
+ NftId policyNftId,
373
+ NftId bundleNftId,
374
+ Amount collateralAmount
375
+ )
376
+ external
377
+ virtual
378
+ restricted()
379
+ {
380
+ _checkNftType(policyNftId, POLICY());
381
+ _checkNftType(bundleNftId, BUNDLE());
382
+
383
+ instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
384
+ }
385
+
386
+ /// @dev unlinks policy from bundle
387
+ function unlinkPolicy(
388
+ IInstance instance,
389
+ NftId policyNftId
390
+ )
391
+ external
392
+ virtual
393
+ restricted
394
+ {
395
+ _checkNftType(policyNftId, POLICY());
396
+
397
+ // ensure policy is closeable
398
+ if (!policyIsCloseable(instance, policyNftId)) {
399
+ revert ErrorBundleServicePolicyNotCloseable(policyNftId);
400
+ }
401
+
402
+ instance.getBundleSet().unlinkPolicy(policyNftId);
403
+ }
404
+
405
+ /// @inheritdoc IBundleService
406
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
407
+ public
408
+ virtual
409
+ // TODO: restricted() (once #462 is done)
410
+ returns (Amount withdrawnAmount)
411
+ {
412
+ _checkNftType(bundleNftId, BUNDLE());
413
+
414
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
415
+ InstanceReader reader = instance.getInstanceReader();
416
+
417
+ IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
418
+ address poolWallet = poolInfo.wallet;
419
+
420
+ // IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
421
+
422
+ // determine withdrawn amount
423
+ withdrawnAmount = amount;
424
+ if (withdrawnAmount.gte(AmountLib.max())) {
425
+ withdrawnAmount = reader.getFeeAmount(bundleNftId);
426
+ } else {
427
+ if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
428
+ revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
429
+ }
430
+ }
431
+
432
+ // decrease fee counters by withdrawnAmount
433
+ {
434
+ InstanceStore store = instance.getInstanceStore();
435
+ // decrease fee amount of the bundle
436
+ _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
437
+ // decrease pool balance
438
+ _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
439
+ }
440
+
441
+ // transfer amount to bundle owner
442
+ {
443
+ address owner = getRegistry().ownerOf(bundleNftId);
444
+ emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
445
+ poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
446
+ }
447
+ }
448
+
449
+ /// @inheritdoc IBundleService
450
+ function policyIsCloseable(IInstance instance, NftId policyNftId)
451
+ public
452
+ view
453
+ returns (bool isCloseable)
454
+ {
455
+ _checkNftType(policyNftId, POLICY());
456
+
457
+ IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
458
+
459
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
460
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
461
+ if (info.closedAt.gtz()) { return false; } // not closeable: already closed
462
+ if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
463
+
464
+ // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
465
+ if (info.claimAmount == info.sumInsuredAmount) { return true; }
466
+
467
+ // not closeable: not yet expired
468
+ if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
469
+
470
+ // all conditionsl to close the policy are met
471
+ return true;
472
+ }
473
+
474
+ /// @dev links policy to bundle
475
+ function _linkPolicy(IInstance instance, NftId policyNftId)
476
+ internal
477
+ {
478
+ InstanceReader instanceReader = instance.getInstanceReader();
479
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
480
+
481
+ // ensure policy has not yet been activated in a previous tx already
482
+ if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
483
+ revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
484
+ }
485
+
486
+ BundleSet bundleManager = instance.getBundleSet();
487
+ bundleManager.linkPolicy(policyNftId);
488
+ }
489
+
490
+ function _getDomain() internal pure override returns(ObjectType) {
491
+ return BUNDLE();
492
+ }
493
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {BundleService} from "./BundleService.sol";
7
+
8
+ contract BundleServiceManager is ProxyManager {
9
+
10
+ BundleService private _bundleService;
11
+
12
+ /// @dev initializes proxy manager with pool service implementation
13
+ constructor(
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
18
+ {
19
+ BundleService svc = new BundleService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _bundleService = BundleService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getBundleService()
32
+ external
33
+ view
34
+ returns (BundleService)
35
+ {
36
+ return _bundleService;
37
+ }
38
+
39
+ }