@etherisc/gif-next 0.0.2-ed4dd55 → 0.0.2-edc2c3a-751

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 (622) hide show
  1. package/README.md +427 -9
  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/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  5. package/artifacts/contracts/{registry/IRegistry.sol/IOwnable.json → authorization/AccessAdmin.sol/IAccessManagedChecker.json} +4 -4
  6. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  8. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  10. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/access → authorization}/IAccess.sol/IAccess.json +1 -1
  12. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  14. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  18. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1292 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +986 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1494 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +862 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +885 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +984 -0
  36. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1441 -0
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1991 -0
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1145 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2293 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  62. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +808 -0
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +342 -514
  66. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +709 -0
  68. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/Instance.sol/Instance.json +475 -580
  70. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1684 -0
  72. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
  74. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2286 -0
  76. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1018 -0
  78. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +746 -0
  80. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3668 -0
  82. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  84. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  86. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  87. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  94. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  96. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  98. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  99. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  102. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  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 +929 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -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 +744 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +845 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +990 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +766 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  125. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1222 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1360 -0
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +922 -0
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +877 -0
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1285 -0
  138. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  139. package/artifacts/contracts/pool/Pool.sol/Pool.json +997 -0
  140. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1619 -0
  142. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +794 -0
  144. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +806 -0
  146. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  148. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1116 -0
  150. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  152. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1439 -0
  154. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +858 -0
  156. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +573 -0
  158. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -0
  160. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +944 -0
  162. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +578 -0
  164. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +973 -0
  166. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +429 -0
  168. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1313 -0
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +810 -0
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  173. package/artifacts/contracts/product/PricingService.sol/PricingService.json +923 -0
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  176. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  177. package/artifacts/contracts/product/Product.sol/Product.json +1074 -0
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  179. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1030 -123
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  187. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1019 -0
  188. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  189. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  190. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  191. package/artifacts/contracts/registry/Registry.sol/Registry.json +1535 -161
  192. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  193. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
  194. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1262 -0
  196. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +737 -0
  198. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  199. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  200. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  201. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  202. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  203. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  204. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  205. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  206. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  207. package/artifacts/contracts/shared/Component.sol/Component.json +677 -0
  208. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  209. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1908 -0
  210. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  211. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +850 -0
  212. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  213. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +474 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  217. package/artifacts/contracts/{instance/component/IComponent.sol/IInstanceLinked.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  218. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  219. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/ContractLib.sol/ITargetHelper.json} +4 -9
  220. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  221. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +602 -0
  222. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  223. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1467 -0
  224. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  225. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +679 -0
  226. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  227. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +510 -0
  228. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +146 -0
  230. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  231. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +147 -0
  232. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  234. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +210 -0
  236. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  237. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +5 -19
  238. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IService.sol/IService.json +375 -0
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  241. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  243. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +767 -0
  244. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  245. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  246. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  247. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  248. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  249. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  250. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  251. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +209 -0
  252. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  253. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  254. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  255. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +322 -0
  256. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  257. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  258. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  259. package/artifacts/contracts/shared/Service.sol/Service.json +442 -0
  260. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  261. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +822 -0
  262. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  263. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  264. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  265. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  266. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  267. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1417 -0
  268. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  269. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  270. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  272. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  273. package/artifacts/contracts/staking/Staking.sol/Staking.json +1816 -0
  274. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  275. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  276. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  277. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
  278. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  279. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  280. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1265 -0
  282. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +734 -0
  284. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  286. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  287. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  288. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  289. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  290. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  292. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  294. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  296. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  298. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  300. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  302. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  303. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  304. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  306. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  307. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  308. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  310. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  312. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  314. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  316. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +180 -0
  318. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  320. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  322. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  324. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  326. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  328. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  330. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  332. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  334. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  336. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  338. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  339. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  340. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  341. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  342. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  343. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  344. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  345. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  346. package/contracts/authorization/AccessAdmin.sol +615 -0
  347. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  348. package/contracts/authorization/Authorization.sol +289 -0
  349. package/contracts/authorization/IAccess.sol +49 -0
  350. package/contracts/authorization/IAccessAdmin.sol +137 -0
  351. package/contracts/authorization/IAuthorization.sol +60 -0
  352. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  353. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  354. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  355. package/contracts/distribution/BasicDistribution.sol +139 -0
  356. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  357. package/contracts/distribution/Distribution.sol +287 -0
  358. package/contracts/distribution/DistributionService.sol +354 -0
  359. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  360. package/contracts/distribution/IDistributionComponent.sol +52 -0
  361. package/contracts/distribution/IDistributionService.sol +100 -0
  362. package/contracts/examples/fire/DamageLevel.sol +59 -0
  363. package/contracts/examples/fire/FirePool.sol +90 -0
  364. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  365. package/contracts/examples/fire/FireProduct.sol +436 -0
  366. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  367. package/contracts/examples/fire/FireUSD.sol +26 -0
  368. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  369. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  370. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  371. package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
  372. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  373. package/contracts/examples/unpermissioned/SimpleProduct.sol +352 -0
  374. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  375. package/contracts/instance/BundleSet.sol +130 -0
  376. package/contracts/instance/IInstance.sol +66 -15
  377. package/contracts/instance/IInstanceService.sol +70 -0
  378. package/contracts/instance/Instance.sol +221 -45
  379. package/contracts/instance/InstanceAdmin.sol +288 -0
  380. package/contracts/instance/InstanceAuthorizationV3.sol +218 -0
  381. package/contracts/instance/InstanceReader.sol +581 -0
  382. package/contracts/instance/InstanceService.sol +392 -0
  383. package/contracts/instance/InstanceServiceManager.sol +39 -0
  384. package/contracts/instance/InstanceStore.sol +287 -0
  385. package/contracts/instance/RiskSet.sol +119 -0
  386. package/contracts/instance/base/BalanceStore.sol +123 -0
  387. package/contracts/instance/base/Cloneable.sol +28 -0
  388. package/contracts/instance/base/ObjectCounter.sol +20 -0
  389. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  390. package/contracts/instance/base/ObjectSet.sol +78 -0
  391. package/contracts/instance/module/IAccess.sol +46 -0
  392. package/contracts/instance/module/IBundle.sol +20 -0
  393. package/contracts/instance/module/IComponents.sol +50 -0
  394. package/contracts/instance/module/IDistribution.sol +41 -0
  395. package/contracts/instance/module/IPolicy.sol +85 -0
  396. package/contracts/instance/module/IRisk.sol +12 -0
  397. package/contracts/mock/Dip.sol +26 -0
  398. package/contracts/oracle/BasicOracle.sol +47 -0
  399. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  400. package/contracts/oracle/IOracle.sol +36 -0
  401. package/contracts/oracle/IOracleComponent.sol +33 -0
  402. package/contracts/oracle/IOracleService.sol +66 -0
  403. package/contracts/oracle/Oracle.sol +156 -0
  404. package/contracts/oracle/OracleService.sol +309 -0
  405. package/contracts/oracle/OracleServiceManager.sol +39 -0
  406. package/contracts/pool/BasicPool.sol +175 -0
  407. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  408. package/contracts/pool/BundleService.sol +423 -0
  409. package/contracts/pool/BundleServiceManager.sol +39 -0
  410. package/contracts/pool/IBundleService.sol +122 -0
  411. package/contracts/pool/IPoolComponent.sol +62 -0
  412. package/contracts/pool/IPoolService.sol +153 -0
  413. package/contracts/pool/Pool.sol +345 -0
  414. package/contracts/pool/PoolService.sol +612 -0
  415. package/contracts/pool/PoolServiceManager.sol +39 -0
  416. package/contracts/product/ApplicationService.sol +259 -0
  417. package/contracts/product/ApplicationServiceManager.sol +38 -0
  418. package/contracts/product/BasicProduct.sol +49 -0
  419. package/contracts/product/BasicProductAuthorization.sol +41 -0
  420. package/contracts/product/ClaimService.sol +614 -0
  421. package/contracts/product/ClaimServiceManager.sol +38 -0
  422. package/contracts/product/IApplicationService.sol +66 -0
  423. package/contracts/product/IClaimService.sol +123 -0
  424. package/contracts/product/IPolicyService.sol +90 -0
  425. package/contracts/product/IPricingService.sol +39 -0
  426. package/contracts/product/IProductComponent.sol +59 -0
  427. package/contracts/product/IRiskService.sol +33 -0
  428. package/contracts/product/PolicyService.sol +733 -0
  429. package/contracts/product/PolicyServiceManager.sol +39 -0
  430. package/contracts/product/PricingService.sol +300 -0
  431. package/contracts/product/PricingServiceManager.sol +39 -0
  432. package/contracts/product/Product.sol +427 -0
  433. package/contracts/product/RiskService.sol +107 -0
  434. package/contracts/product/RiskServiceManager.sol +39 -0
  435. package/contracts/registry/ChainNft.sol +176 -100
  436. package/contracts/registry/IRegistry.sol +156 -51
  437. package/contracts/registry/IRegistryService.sol +62 -0
  438. package/contracts/registry/ITransferInterceptor.sol +6 -0
  439. package/contracts/registry/Registry.sol +660 -111
  440. package/contracts/registry/RegistryAdmin.sol +457 -0
  441. package/contracts/registry/RegistryService.sol +241 -0
  442. package/contracts/registry/RegistryServiceManager.sol +53 -0
  443. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  444. package/contracts/registry/ReleaseRegistry.sol +486 -0
  445. package/contracts/registry/ServiceAuthorizationV3.sol +176 -0
  446. package/contracts/registry/TokenRegistry.sol +315 -0
  447. package/contracts/shared/Component.sol +219 -0
  448. package/contracts/shared/ComponentService.sol +869 -0
  449. package/contracts/shared/ComponentServiceManager.sol +38 -0
  450. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  451. package/contracts/shared/ContractLib.sol +224 -0
  452. package/contracts/shared/IComponent.sol +62 -0
  453. package/contracts/shared/IComponentService.sol +134 -0
  454. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  455. package/contracts/shared/IKeyValueStore.sol +54 -0
  456. package/contracts/shared/ILifecycle.sol +31 -0
  457. package/contracts/shared/INftOwnable.sol +25 -0
  458. package/contracts/shared/IPolicyHolder.sol +35 -0
  459. package/contracts/shared/IRegisterable.sol +26 -0
  460. package/contracts/shared/IRegistryLinked.sol +11 -0
  461. package/contracts/shared/IService.sol +25 -0
  462. package/contracts/shared/InitializableERC165.sol +27 -0
  463. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  464. package/contracts/shared/KeyValueStore.sol +131 -0
  465. package/contracts/shared/Lifecycle.sol +88 -0
  466. package/contracts/shared/NftIdSet.sol +65 -0
  467. package/contracts/shared/NftOwnable.sol +127 -0
  468. package/contracts/shared/PolicyHolder.sol +62 -0
  469. package/contracts/shared/Registerable.sol +83 -0
  470. package/contracts/shared/RegistryLinked.sol +38 -0
  471. package/contracts/shared/Service.sol +84 -0
  472. package/contracts/shared/TokenHandler.sol +389 -0
  473. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  474. package/contracts/staking/IStaking.sol +173 -0
  475. package/contracts/staking/IStakingService.sol +157 -0
  476. package/contracts/staking/StakeManagerLib.sol +224 -0
  477. package/contracts/staking/Staking.sol +515 -0
  478. package/contracts/staking/StakingLifecycle.sol +23 -0
  479. package/contracts/staking/StakingManager.sol +52 -0
  480. package/contracts/staking/StakingReader.sol +190 -0
  481. package/contracts/staking/StakingService.sol +440 -0
  482. package/contracts/staking/StakingServiceManager.sol +44 -0
  483. package/contracts/staking/StakingStore.sol +605 -0
  484. package/contracts/staking/TargetManagerLib.sol +211 -0
  485. package/contracts/type/AddressSet.sol +58 -0
  486. package/contracts/type/Amount.sol +150 -0
  487. package/contracts/type/Blocknumber.sol +142 -0
  488. package/contracts/type/ClaimId.sol +80 -0
  489. package/contracts/type/DistributorType.sol +55 -0
  490. package/contracts/type/Fee.sol +66 -0
  491. package/contracts/type/Key32.sol +50 -0
  492. package/contracts/type/Key32Set.sol +62 -0
  493. package/contracts/type/NftId.sol +85 -0
  494. package/contracts/type/NftIdSet.sol +62 -0
  495. package/contracts/type/ObjectType.sol +278 -0
  496. package/contracts/type/PayoutId.sol +82 -0
  497. package/contracts/type/Referral.sol +90 -0
  498. package/contracts/type/RequestId.sol +75 -0
  499. package/contracts/type/RiskId.sol +69 -0
  500. package/contracts/type/RoleId.sol +162 -0
  501. package/contracts/type/Seconds.sol +101 -0
  502. package/contracts/type/Selector.sol +102 -0
  503. package/contracts/type/StateId.sol +149 -0
  504. package/contracts/type/String.sol +53 -0
  505. package/contracts/type/Timestamp.sol +146 -0
  506. package/contracts/type/UFixed.sol +245 -0
  507. package/contracts/type/Version.sol +110 -0
  508. package/contracts/upgradeability/IVersionable.sol +53 -0
  509. package/contracts/upgradeability/ProxyManager.sol +232 -0
  510. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  511. package/contracts/upgradeability/Versionable.sol +59 -0
  512. package/package.json +26 -7
  513. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  514. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  515. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  516. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  517. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  518. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  519. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  520. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  521. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  522. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -195
  523. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  524. package/artifacts/contracts/components/Product.sol/Product.json +0 -213
  525. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  526. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  527. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  528. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  529. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  530. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  531. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  532. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  533. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  534. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  535. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  536. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  537. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  538. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  539. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  540. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  541. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  542. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  543. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  544. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  545. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  546. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  547. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  548. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  549. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  550. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  551. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  552. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  553. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  554. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  555. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  556. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
  557. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  558. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  559. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  560. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  561. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  562. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  563. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  564. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  565. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  566. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  567. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  568. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  569. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  570. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  571. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  572. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  573. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  574. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  575. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  576. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  577. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  578. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  579. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  580. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  581. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  582. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
  583. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  584. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  585. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  586. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  587. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  588. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  589. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  590. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  591. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  592. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  593. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  594. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  595. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  596. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -10
  597. package/contracts/components/Component.sol +0 -62
  598. package/contracts/components/IPool.sol +0 -9
  599. package/contracts/components/IProduct.sol +0 -11
  600. package/contracts/components/Pool.sol +0 -29
  601. package/contracts/components/Product.sol +0 -65
  602. package/contracts/experiment/inheritance/A.sol +0 -56
  603. package/contracts/experiment/inheritance/B.sol +0 -23
  604. package/contracts/experiment/inheritance/C.sol +0 -28
  605. package/contracts/experiment/inheritance/IA.sol +0 -18
  606. package/contracts/experiment/inheritance/IB.sol +0 -9
  607. package/contracts/experiment/inheritance/IC.sol +0 -11
  608. package/contracts/experiment/types/TypeA.sol +0 -42
  609. package/contracts/experiment/types/TypeB.sol +0 -24
  610. package/contracts/instance/access/Access.sol +0 -218
  611. package/contracts/instance/access/IAccess.sol +0 -83
  612. package/contracts/instance/component/ComponentModule.sol +0 -259
  613. package/contracts/instance/component/IComponent.sol +0 -94
  614. package/contracts/instance/policy/IPolicy.sol +0 -66
  615. package/contracts/instance/policy/PolicyModule.sol +0 -106
  616. package/contracts/instance/pool/IPoolModule.sol +0 -40
  617. package/contracts/instance/pool/PoolModule.sol +0 -83
  618. package/contracts/instance/product/IProductService.sol +0 -45
  619. package/contracts/instance/product/ProductService.sol +0 -105
  620. package/contracts/registry/IChainNft.sol +0 -18
  621. package/contracts/types/ChainId.sol +0 -24
  622. package/contracts/types/NftId.sol +0 -25
@@ -0,0 +1,68 @@
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 _setupServiceTargets()
23
+ internal
24
+ virtual override
25
+ {
26
+ _addServiceTargetWithRole(POOL());
27
+ }
28
+
29
+ function _setupTargets()
30
+ internal
31
+ virtual override
32
+ {
33
+ _addComponentTargetWithRole(POOL()); // basic pool target
34
+ }
35
+
36
+
37
+ function _setupTargetAuthorizations()
38
+ internal
39
+ virtual override
40
+ {
41
+ IAccess.FunctionInfo[] storage functions;
42
+
43
+ // authorize public role (open access to any account, only allows to lock target)
44
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
45
+ _authorize(functions, BasicPool.stake.selector, "stake");
46
+ _authorize(functions, BasicPool.unstake.selector, "unstake");
47
+ _authorize(functions, BasicPool.extend.selector, "extend");
48
+ _authorize(functions, BasicPool.lockBundle.selector, "lockBundle");
49
+ _authorize(functions, BasicPool.unlockBundle.selector, "unlockBundle");
50
+ _authorize(functions, BasicPool.closeBundle.selector, "closeBundle");
51
+ _authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
52
+
53
+ _authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
54
+ _authorize(functions, BasicPool.setFees.selector, "setFees");
55
+ _authorize(functions, BasicPool.stake.selector, "stake");
56
+ _authorize(functions, BasicPool.unstake.selector, "unstake");
57
+ _authorize(functions, BasicPool.extend.selector, "extend");
58
+
59
+ _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
60
+
61
+ _authorize(functions, BasicPool.withdrawBundleFees.selector, "withdrawBundleFees");
62
+
63
+ // authorize pool service
64
+ functions = _authorizeForTarget(getTargetName(), getServiceRole(POOL()));
65
+ _authorize(functions, IPoolComponent.verifyApplication.selector, "verifyApplication");
66
+ }
67
+ }
68
+
@@ -0,0 +1,423 @@
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
+ restricted()
67
+ {
68
+ _checkNftType(bundleNftId, BUNDLE());
69
+
70
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
71
+ InstanceReader instanceReader = instance.getInstanceReader();
72
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
73
+ if(bundleInfo.poolNftId.eqz()) {
74
+ revert ErrorBundleServiceBundleUnknown(bundleNftId);
75
+ }
76
+
77
+ if(bundleInfo.poolNftId != poolNftId) {
78
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
79
+ }
80
+
81
+ bundleInfo.fee = fee;
82
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
83
+ }
84
+
85
+
86
+ function create(
87
+ address owner,
88
+ Fee memory bundleFee,
89
+ Seconds lifetime,
90
+ bytes calldata filter
91
+ )
92
+ external
93
+ virtual
94
+ restricted()
95
+ returns(NftId bundleNftId)
96
+ {
97
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
98
+
99
+ // register bundle with registry
100
+ bundleNftId = _registryService.registerBundle(
101
+ IRegistry.ObjectInfo(
102
+ NftIdLib.zero(),
103
+ poolNftId,
104
+ BUNDLE(),
105
+ false, // intercepting property for bundles is defined on pool
106
+ address(0),
107
+ owner,
108
+ "" // bundle data to be stored in registry
109
+ )
110
+ );
111
+
112
+ // create bundle info in instance
113
+ InstanceStore instanceStore = instance.getInstanceStore();
114
+ instanceStore.createBundle(
115
+ bundleNftId,
116
+ IBundle.BundleInfo({
117
+ poolNftId: poolNftId,
118
+ fee: bundleFee,
119
+ filter: filter,
120
+ activatedAt: TimestampLib.blockTimestamp(),
121
+ expiredAt: TimestampLib.blockTimestamp().addSeconds(lifetime),
122
+ closedAt: zeroTimestamp()
123
+ })
124
+ );
125
+
126
+ // put bundle under bundle managemet
127
+ BundleSet bundleManager = instance.getBundleSet();
128
+ bundleManager.add(bundleNftId);
129
+
130
+ emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
131
+ }
132
+
133
+
134
+ // the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
135
+ function lockCollateral(
136
+ IInstance instance,
137
+ NftId policyNftId,
138
+ NftId bundleNftId,
139
+ Amount collateralAmount // required local amount to collateralize policy
140
+ )
141
+ external
142
+ virtual
143
+ restricted()
144
+ {
145
+ _checkNftType(policyNftId, POLICY());
146
+ _checkNftType(bundleNftId, BUNDLE());
147
+
148
+ InstanceReader instanceReader = instance.getInstanceReader();
149
+
150
+ {
151
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
152
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
153
+
154
+ // ensure bundle is active and not yet expired
155
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
156
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
157
+ }
158
+ }
159
+
160
+ InstanceStore instanceStore = instance.getInstanceStore();
161
+
162
+ {
163
+ // ensure bundle capacity is sufficent to collateralize policy
164
+ (
165
+ Amount balanceAmount,
166
+ Amount lockedAmount,
167
+ Amount feeAmount
168
+ ) = instanceStore.getAmounts(bundleNftId);
169
+
170
+ Amount capacity = balanceAmount - (lockedAmount + feeAmount);
171
+ if(capacity < collateralAmount) {
172
+ revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
173
+ }
174
+ }
175
+
176
+ // updated locked amount
177
+ instanceStore.increaseLocked(bundleNftId, collateralAmount);
178
+ }
179
+
180
+
181
+ function lock(NftId bundleNftId)
182
+ external
183
+ virtual
184
+ restricted()
185
+ {
186
+ _checkNftType(bundleNftId, BUNDLE());
187
+
188
+ (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
189
+
190
+ // udpate bundle state
191
+ instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
192
+
193
+ // update set of active bundles
194
+ BundleSet bundleManager = instance.getBundleSet();
195
+ bundleManager.lock(bundleNftId);
196
+
197
+ emit LogBundleServiceBundleLocked(bundleNftId);
198
+ }
199
+
200
+
201
+ function unlock(NftId bundleNftId)
202
+ external
203
+ virtual
204
+ restricted()
205
+ {
206
+ _checkNftType(bundleNftId, BUNDLE());
207
+
208
+ (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
209
+
210
+ // udpate bundle state
211
+ instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
212
+
213
+ // update set of active bundles
214
+ BundleSet bundleManager = instance.getBundleSet();
215
+ bundleManager.unlock(bundleNftId);
216
+
217
+ emit LogBundleServiceBundleActivated(bundleNftId);
218
+ }
219
+
220
+
221
+ function close(
222
+ IInstance instance,
223
+ NftId bundleNftId
224
+ )
225
+ external
226
+ virtual
227
+ restricted()
228
+ returns (Amount unstakedAmount, Amount feeAmount)
229
+ {
230
+ _checkNftType(bundleNftId, BUNDLE());
231
+
232
+ InstanceReader instanceReader = instance.getInstanceReader();
233
+
234
+ // ensure no open policies attached to bundle
235
+ BundleSet bundleManager = instance.getBundleSet();
236
+ uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
237
+ if(openPolicies > 0) {
238
+ revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
239
+ }
240
+
241
+ {
242
+ // update bundle state
243
+ InstanceStore instanceStore = instance.getInstanceStore();
244
+ instanceStore.updateBundleState(bundleNftId, CLOSED());
245
+ bundleManager.lock(bundleNftId);
246
+
247
+ // decrease bundle counters
248
+ Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
249
+ feeAmount = instanceReader.getFeeAmount(bundleNftId);
250
+ unstakedAmount = balanceAmountWithFees - feeAmount;
251
+ _componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
252
+ }
253
+ }
254
+
255
+ /// @inheritdoc IBundleService
256
+ function stake(
257
+ IInstance instance,
258
+ NftId bundleNftId,
259
+ Amount amount
260
+ )
261
+ external
262
+ virtual
263
+ restricted()
264
+ {
265
+ _checkNftType(bundleNftId, BUNDLE());
266
+
267
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
268
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
269
+
270
+ if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
271
+ || bundleInfo.expiredAt < TimestampLib.blockTimestamp()
272
+ || bundleInfo.closedAt.gtz()) {
273
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
274
+ }
275
+
276
+ _componentService.increaseBundleBalance(
277
+ instance.getInstanceStore(),
278
+ bundleNftId,
279
+ amount,
280
+ AmountLib.zero());
281
+ }
282
+
283
+ /// @inheritdoc IBundleService
284
+ function unstake(
285
+ IInstance instance,
286
+ NftId bundleNftId,
287
+ Amount amount
288
+ )
289
+ external
290
+ virtual
291
+ restricted()
292
+ returns (Amount unstakedAmount)
293
+ {
294
+ _checkNftType(bundleNftId, BUNDLE());
295
+
296
+ InstanceStore instanceStore = instance.getInstanceStore();
297
+ (
298
+ Amount balanceAmount,
299
+ Amount lockedAmount,
300
+ Amount feeAmount
301
+ ) = instanceStore.getAmounts(bundleNftId);
302
+
303
+ unstakedAmount = amount;
304
+ Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
305
+
306
+ // if amount is max, then unstake all available
307
+ if (amount.gte(AmountLib.max())) {
308
+ unstakedAmount = availableAmount;
309
+ }
310
+
311
+ // ensure unstaked amount does not exceed available amount
312
+ if (unstakedAmount > availableAmount) {
313
+ revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
314
+ }
315
+
316
+ _componentService.decreaseBundleBalance(
317
+ instanceStore,
318
+ bundleNftId,
319
+ unstakedAmount,
320
+ AmountLib.zero());
321
+ }
322
+
323
+ /// @inheritdoc IBundleService
324
+ function extend(NftId bundleNftId, Seconds lifetimeExtension)
325
+ external
326
+ virtual
327
+ restricted()
328
+ returns (Timestamp extendedExpiredAt)
329
+ {
330
+ _checkNftType(bundleNftId, BUNDLE());
331
+
332
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
333
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
334
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
335
+
336
+ // ensure bundle belongs to the pool
337
+ if (bundleInfo.poolNftId != poolNftId) {
338
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
339
+ }
340
+
341
+ // ensure bundle is active and not yet expired
342
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
343
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
344
+ }
345
+
346
+ if (lifetimeExtension.eqz()) {
347
+ revert ErrorBundleServiceExtensionLifetimeIsZero();
348
+ }
349
+
350
+ bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
351
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
352
+
353
+ emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
354
+
355
+ return bundleInfo.expiredAt;
356
+ }
357
+
358
+
359
+ function releaseCollateral(
360
+ IInstance instance,
361
+ NftId policyNftId,
362
+ NftId bundleNftId,
363
+ Amount collateralAmount
364
+ )
365
+ external
366
+ virtual
367
+ restricted()
368
+ {
369
+ _checkNftType(policyNftId, POLICY());
370
+ _checkNftType(bundleNftId, BUNDLE());
371
+
372
+ instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
373
+ }
374
+
375
+
376
+ /// @inheritdoc IBundleService
377
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
378
+ public
379
+ virtual
380
+ restricted()
381
+ returns (Amount withdrawnAmount)
382
+ {
383
+ _checkNftType(bundleNftId, BUNDLE());
384
+
385
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
386
+ InstanceReader reader = instance.getInstanceReader();
387
+
388
+ IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
389
+ address poolWallet = poolInfo.tokenHandler.getWallet();
390
+
391
+ // IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
392
+
393
+ // determine withdrawn amount
394
+ withdrawnAmount = amount;
395
+ if (withdrawnAmount.gte(AmountLib.max())) {
396
+ withdrawnAmount = reader.getFeeAmount(bundleNftId);
397
+ } else {
398
+ if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
399
+ revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
400
+ }
401
+ }
402
+
403
+ // decrease fee counters by withdrawnAmount
404
+ {
405
+ InstanceStore store = instance.getInstanceStore();
406
+ // decrease fee amount of the bundle
407
+ _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
408
+ // decrease pool balance
409
+ _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
410
+ }
411
+
412
+ // transfer amount to bundle owner
413
+ {
414
+ address owner = getRegistry().ownerOf(bundleNftId);
415
+ emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
416
+ poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
417
+ }
418
+ }
419
+
420
+ function _getDomain() internal pure override returns(ObjectType) {
421
+ return BUNDLE();
422
+ }
423
+ }
@@ -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
+ }
@@ -0,0 +1,122 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+ import {Fee} from "../type/Fee.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+ import {IBundle} from "../instance/module/IBundle.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
10
+ import {Seconds} from "../type/Seconds.sol";
11
+ import {StateId} from "../type/StateId.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
13
+
14
+ interface IBundleService is IService {
15
+
16
+ event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId);
17
+ event LogBundleServiceBundleActivated(NftId bundleNftId);
18
+ event LogBundleServiceBundleLocked(NftId bundleNftId);
19
+
20
+ error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, Amount amount);
21
+ error ErrorBundleServiceBundleNotOpen(NftId bundleNftId, StateId state, Timestamp expiredAt);
22
+ error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, Amount capacityAmount, Amount collateralAmount);
23
+ error ErrorBundleServiceBundleWithOpenPolicies(NftId bundleNftId, uint256 openPoliciesCount);
24
+
25
+ error ErrorBundleServiceBundleUnknown(NftId bundleNftId);
26
+ error ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId expectedPool, NftId actualPool);
27
+
28
+ error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
29
+
30
+ error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
31
+
32
+ error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
33
+
34
+ error ErrorBundleServiceExtensionLifetimeIsZero();
35
+
36
+ event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
37
+ event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
38
+
39
+ /// @dev Create a new bundle for the specified attributes.
40
+ function create(
41
+ address owner, // initial bundle owner
42
+ Fee memory fee, // fees deducted from premium that go to bundle owner
43
+ Seconds lifetime, // initial duration for which new policies are covered
44
+ bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
45
+ )
46
+ external
47
+ returns(NftId bundleNftId); // the nft id of the newly created bundle
48
+
49
+
50
+ /// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
51
+ /// may only be called by the pool service
52
+ function stake(IInstance instance, NftId bundleNftId, Amount amount) external;
53
+
54
+ /// @dev decrease bundle stakes by the specified amount
55
+ /// may only be called by the pool service
56
+ /// @param instance the instance relevant for the bundle
57
+ /// @param bundleNftId the bundle nft id
58
+ /// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
59
+ /// @return unstakedAmount the effective unstaked amount
60
+ function unstake(IInstance instance, 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
+ IInstance instance,
111
+ NftId policyNftId,
112
+ NftId bundleNftId,
113
+ Amount collateralAmount
114
+ ) external;
115
+
116
+ // FIXME: move to pool service
117
+ /// @dev Withdraw bundle feeds for the given bundle
118
+ /// @param bundleNftId the bundle Nft Id
119
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
120
+ /// @return withdrawnAmount the effective withdrawn amount
121
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
122
+ }