@etherisc/gif-next 0.0.2-ffba655 → 3.0.0-1a7e54a-113

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 (700) hide show
  1. package/README.md +277 -68
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +810 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1735 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +817 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/access → authorization}/IAccess.sol/IAccess.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1400 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +465 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +407 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +652 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +844 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +939 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +950 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +838 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +844 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +844 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  53. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +500 -0
  54. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +229 -0
  56. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  58. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
  60. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  62. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
  64. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2189 -0
  66. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
  68. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  69. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  70. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  71. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  84. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  85. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
  86. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
  88. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  90. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  92. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  93. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +734 -451
  94. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1102 -0
  96. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  97. package/artifacts/contracts/instance/Instance.sol/Instance.json +810 -530
  98. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  99. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2400 -0
  100. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  101. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +872 -0
  102. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  103. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2628 -0
  104. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1348 -0
  106. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +792 -0
  108. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  109. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3039 -0
  110. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  111. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  112. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  113. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  114. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  115. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  116. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  117. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  118. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  120. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  121. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  122. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  123. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  124. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  125. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  126. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  127. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  128. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  129. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  130. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  131. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  132. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  133. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  134. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  135. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  136. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  137. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  138. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  139. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  140. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  141. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +849 -0
  142. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  143. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  144. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  145. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  146. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  147. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  148. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  149. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  150. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  151. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  152. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +830 -0
  154. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  155. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  156. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  157. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +844 -0
  158. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  159. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  160. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +886 -0
  162. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  163. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  164. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  165. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +895 -0
  166. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  167. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  168. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  169. package/artifacts/contracts/pool/Pool.sol/Pool.json +1015 -0
  170. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  171. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  172. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  173. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  174. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +886 -0
  176. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  177. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  178. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +810 -0
  180. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  181. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  182. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  183. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +844 -0
  184. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  185. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  186. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  187. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +906 -0
  188. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  189. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +804 -0
  190. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  191. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  192. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  193. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  194. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  195. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  196. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  197. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1006 -0
  198. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  199. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +665 -0
  200. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  201. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  202. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  203. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  204. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  205. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +874 -0
  206. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  207. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  208. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  209. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +834 -0
  210. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  211. package/artifacts/contracts/product/Product.sol/Product.json +1107 -0
  212. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  213. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  214. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  215. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +794 -0
  216. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  217. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  218. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  219. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1055 -113
  220. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  221. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1072 -0
  222. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  223. package/artifacts/contracts/{instance/component/IComponent.sol/IInstanceLinked.json → registry/IRelease.sol/IRelease.json} +6 -6
  224. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  225. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  226. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  227. package/artifacts/contracts/registry/Registry.sol/Registry.json +1543 -176
  228. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  229. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2255 -0
  230. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  231. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  232. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  233. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1298 -0
  234. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  235. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +793 -0
  236. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  237. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
  238. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  240. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  241. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1401 -0
  242. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  243. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +705 -0
  244. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  245. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +721 -0
  246. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  247. package/artifacts/contracts/shared/Component.sol/Component.json +695 -0
  248. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  249. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  250. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  251. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +882 -0
  252. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  253. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  254. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  255. package/artifacts/contracts/{registry/IRegistry.sol/IOwnable.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  256. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  257. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/ContractLib.sol/ITargetHelper.json} +4 -9
  258. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  259. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  260. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  261. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +620 -0
  262. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  263. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  264. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  265. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +697 -0
  266. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  267. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +146 -0
  268. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  269. package/artifacts/contracts/{registry/IRegistry.sol/IRegisterable.json → shared/INftOwnable.sol/INftOwnable.json} +72 -72
  270. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  271. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  272. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  273. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → shared/IRegisterable.sol/IRegisterable.json} +179 -158
  274. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  275. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +5 -19
  276. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  277. package/artifacts/contracts/shared/IService.sol/IService.json +428 -0
  278. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  279. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  280. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  281. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  282. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  283. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  284. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  285. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  286. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  287. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +228 -0
  288. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  289. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  290. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  291. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +397 -0
  292. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  293. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  294. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  295. package/artifacts/contracts/shared/Service.sol/Service.json +482 -0
  296. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  297. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  298. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  299. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  300. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  301. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  302. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  303. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2747 -0
  304. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  305. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  306. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  307. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  308. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  309. package/artifacts/contracts/staking/Staking.sol/Staking.json +3175 -0
  310. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  311. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  312. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  313. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +867 -0
  314. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  315. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  316. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  317. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  318. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  319. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +786 -0
  320. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  321. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  322. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  323. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  324. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  325. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  326. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  327. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  328. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  330. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +270 -0
  332. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  334. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  336. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  338. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  340. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  342. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  343. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  344. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  346. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  347. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  348. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +238 -0
  350. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  352. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +161 -0
  354. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  355. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  356. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  357. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  358. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  359. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  360. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  361. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  362. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  363. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +308 -0
  364. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  365. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  366. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  367. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  368. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  369. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  370. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  371. package/artifacts/contracts/type/String.sol/StrLib.json +199 -0
  372. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  373. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +344 -0
  374. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  375. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  376. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  377. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  378. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  379. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  380. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  381. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  382. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  383. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +672 -0
  384. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  385. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  386. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  387. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  388. package/contracts/accounting/AccountingService.sol +274 -0
  389. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  390. package/contracts/accounting/IAccountingService.sol +47 -0
  391. package/contracts/authorization/AccessAdmin.sol +679 -0
  392. package/contracts/authorization/AccessAdminLib.sol +678 -0
  393. package/contracts/authorization/AccessManagerCloneable.sol +140 -0
  394. package/contracts/authorization/Authorization.sol +190 -0
  395. package/contracts/authorization/IAccess.sol +66 -0
  396. package/contracts/authorization/IAccessAdmin.sol +142 -0
  397. package/contracts/authorization/IAuthorization.sol +26 -0
  398. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  399. package/contracts/authorization/ServiceAuthorization.sol +300 -0
  400. package/contracts/distribution/BasicDistribution.sol +140 -0
  401. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  402. package/contracts/distribution/Distribution.sol +245 -0
  403. package/contracts/distribution/DistributionService.sol +448 -0
  404. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  405. package/contracts/distribution/IDistributionComponent.sol +45 -0
  406. package/contracts/distribution/IDistributionService.sol +115 -0
  407. package/contracts/examples/fire/DamageLevel.sol +59 -0
  408. package/contracts/examples/fire/FirePool.sol +86 -0
  409. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  410. package/contracts/examples/fire/FireProduct.sol +433 -0
  411. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  412. package/contracts/examples/fire/FireUSD.sol +26 -0
  413. package/contracts/examples/flight/FlightLib.sol +311 -0
  414. package/contracts/examples/flight/FlightMessageVerifier.sol +128 -0
  415. package/contracts/examples/flight/FlightOracle.sol +167 -0
  416. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  417. package/contracts/examples/flight/FlightPool.sol +89 -0
  418. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  419. package/contracts/examples/flight/FlightProduct.sol +545 -0
  420. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  421. package/contracts/examples/flight/FlightUSD.sol +26 -0
  422. package/contracts/examples/flight/originalV1.sol +396 -0
  423. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  424. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  425. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  426. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  427. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  428. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  429. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  430. package/contracts/instance/BaseStore.sol +93 -0
  431. package/contracts/instance/BundleSet.sol +130 -0
  432. package/contracts/instance/IBaseStore.sol +37 -0
  433. package/contracts/instance/IInstance.sol +151 -15
  434. package/contracts/instance/IInstanceService.sol +119 -0
  435. package/contracts/instance/Instance.sol +332 -45
  436. package/contracts/instance/InstanceAdmin.sol +307 -0
  437. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  438. package/contracts/instance/InstanceReader.sol +628 -0
  439. package/contracts/instance/InstanceService.sol +514 -0
  440. package/contracts/instance/InstanceServiceManager.sol +39 -0
  441. package/contracts/instance/InstanceStore.sol +323 -0
  442. package/contracts/instance/ProductStore.sol +290 -0
  443. package/contracts/instance/RiskSet.sol +126 -0
  444. package/contracts/instance/TargetNames.sol +10 -0
  445. package/contracts/instance/base/BalanceStore.sol +121 -0
  446. package/contracts/instance/base/Cloneable.sol +28 -0
  447. package/contracts/instance/base/ObjectCounter.sol +20 -0
  448. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  449. package/contracts/instance/base/ObjectSet.sol +77 -0
  450. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  451. package/contracts/instance/module/IBundle.sol +21 -0
  452. package/contracts/instance/module/IComponents.sol +60 -0
  453. package/contracts/instance/module/IDistribution.sol +54 -0
  454. package/contracts/instance/module/IPolicy.sol +105 -0
  455. package/contracts/instance/module/IRisk.sol +16 -0
  456. package/contracts/mock/Dip.sol +26 -0
  457. package/contracts/oracle/BasicOracle.sol +44 -0
  458. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  459. package/contracts/oracle/IOracle.sol +41 -0
  460. package/contracts/oracle/IOracleComponent.sol +33 -0
  461. package/contracts/oracle/IOracleService.sol +66 -0
  462. package/contracts/oracle/Oracle.sol +152 -0
  463. package/contracts/oracle/OracleService.sol +310 -0
  464. package/contracts/oracle/OracleServiceManager.sol +39 -0
  465. package/contracts/pool/BasicPool.sol +161 -0
  466. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  467. package/contracts/pool/BundleService.sol +386 -0
  468. package/contracts/pool/BundleServiceManager.sol +39 -0
  469. package/contracts/pool/IBundleService.sol +116 -0
  470. package/contracts/pool/IPoolComponent.sol +62 -0
  471. package/contracts/pool/IPoolService.sol +170 -0
  472. package/contracts/pool/Pool.sol +331 -0
  473. package/contracts/pool/PoolLib.sol +341 -0
  474. package/contracts/pool/PoolService.sol +614 -0
  475. package/contracts/pool/PoolServiceManager.sol +39 -0
  476. package/contracts/product/ApplicationService.sol +327 -0
  477. package/contracts/product/ApplicationServiceManager.sol +38 -0
  478. package/contracts/product/BasicProduct.sol +48 -0
  479. package/contracts/product/BasicProductAuthorization.sol +64 -0
  480. package/contracts/product/ClaimService.sol +626 -0
  481. package/contracts/product/ClaimServiceManager.sol +38 -0
  482. package/contracts/product/IApplicationService.sol +88 -0
  483. package/contracts/product/IClaimService.sol +136 -0
  484. package/contracts/product/IPolicyService.sol +102 -0
  485. package/contracts/product/IPricingService.sol +40 -0
  486. package/contracts/product/IProductComponent.sol +62 -0
  487. package/contracts/product/IRiskService.sol +48 -0
  488. package/contracts/product/PolicyService.sol +645 -0
  489. package/contracts/product/PolicyServiceLib.sol +139 -0
  490. package/contracts/product/PolicyServiceManager.sol +39 -0
  491. package/contracts/product/PricingService.sol +306 -0
  492. package/contracts/product/PricingServiceManager.sol +39 -0
  493. package/contracts/product/Product.sol +491 -0
  494. package/contracts/product/RiskService.sol +189 -0
  495. package/contracts/product/RiskServiceManager.sol +39 -0
  496. package/contracts/registry/ChainNft.sol +176 -100
  497. package/contracts/registry/IRegistry.sol +149 -47
  498. package/contracts/registry/IRegistryService.sol +62 -0
  499. package/contracts/registry/IRelease.sol +29 -0
  500. package/contracts/registry/ITransferInterceptor.sol +6 -0
  501. package/contracts/registry/Registry.sol +671 -117
  502. package/contracts/registry/RegistryAdmin.sol +173 -0
  503. package/contracts/registry/RegistryAuthorization.sol +337 -0
  504. package/contracts/registry/RegistryService.sol +241 -0
  505. package/contracts/registry/RegistryServiceManager.sol +53 -0
  506. package/contracts/registry/ReleaseAdmin.sol +199 -0
  507. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  508. package/contracts/registry/ReleaseRegistry.sol +525 -0
  509. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  510. package/contracts/registry/TokenRegistry.sol +317 -0
  511. package/contracts/shared/Component.sol +210 -0
  512. package/contracts/shared/ComponentService.sol +691 -0
  513. package/contracts/shared/ComponentServiceManager.sol +38 -0
  514. package/contracts/shared/ContractLib.sol +312 -0
  515. package/contracts/shared/EcdsaChecker.sol +5 -0
  516. package/contracts/shared/IComponent.sol +58 -0
  517. package/contracts/shared/IComponentService.sol +111 -0
  518. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  519. package/contracts/shared/ILifecycle.sol +31 -0
  520. package/contracts/shared/INftOwnable.sol +27 -0
  521. package/contracts/shared/IPolicyHolder.sol +35 -0
  522. package/contracts/shared/IRegisterable.sol +36 -0
  523. package/contracts/shared/IRegistryLinked.sol +11 -0
  524. package/contracts/shared/IService.sol +23 -0
  525. package/contracts/shared/InitializableERC165.sol +35 -0
  526. package/contracts/shared/InstanceLinkedComponent.sol +232 -0
  527. package/contracts/shared/Lifecycle.sol +88 -0
  528. package/contracts/shared/NftIdSet.sol +65 -0
  529. package/contracts/shared/NftOwnable.sol +129 -0
  530. package/contracts/shared/PolicyHolder.sol +63 -0
  531. package/contracts/shared/Registerable.sol +106 -0
  532. package/contracts/shared/RegistryLinked.sol +38 -0
  533. package/contracts/shared/Service.sol +67 -0
  534. package/contracts/shared/TokenHandler.sol +342 -0
  535. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  536. package/contracts/staking/IStaking.sol +366 -0
  537. package/contracts/staking/IStakingService.sol +127 -0
  538. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  539. package/contracts/staking/Staking.sol +797 -0
  540. package/contracts/staking/StakingLib.sol +195 -0
  541. package/contracts/staking/StakingManager.sol +53 -0
  542. package/contracts/staking/StakingReader.sol +171 -0
  543. package/contracts/staking/StakingService.sol +321 -0
  544. package/contracts/staking/StakingServiceManager.sol +46 -0
  545. package/contracts/staking/StakingStore.sol +1368 -0
  546. package/contracts/staking/TargetHandler.sol +132 -0
  547. package/contracts/staking/TargetManagerLib.sol +234 -0
  548. package/contracts/type/AddressSet.sol +58 -0
  549. package/contracts/type/Amount.sol +154 -0
  550. package/contracts/type/Blocknumber.sol +137 -0
  551. package/contracts/type/ChainId.sol +101 -0
  552. package/contracts/type/ClaimId.sol +80 -0
  553. package/contracts/type/DistributorType.sol +55 -0
  554. package/contracts/type/Fee.sol +66 -0
  555. package/contracts/type/Key32.sol +50 -0
  556. package/contracts/type/Key32Set.sol +62 -0
  557. package/contracts/type/NftId.sol +85 -0
  558. package/contracts/type/NftIdSet.sol +62 -0
  559. package/contracts/type/ObjectType.sol +278 -0
  560. package/contracts/type/PayoutId.sol +82 -0
  561. package/contracts/type/Referral.sol +96 -0
  562. package/contracts/type/RequestId.sol +75 -0
  563. package/contracts/type/RequestIdSet.sol +62 -0
  564. package/contracts/type/RiskId.sol +75 -0
  565. package/contracts/type/RoleId.sol +180 -0
  566. package/contracts/type/Seconds.sol +124 -0
  567. package/contracts/type/Selector.sol +107 -0
  568. package/contracts/type/StateId.sol +149 -0
  569. package/contracts/type/String.sol +95 -0
  570. package/contracts/type/Timestamp.sol +152 -0
  571. package/contracts/type/UFixed.sol +263 -0
  572. package/contracts/type/Version.sol +159 -0
  573. package/contracts/upgradeability/IVersionable.sol +56 -0
  574. package/contracts/upgradeability/ProxyManager.sol +246 -0
  575. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  576. package/contracts/upgradeability/Versionable.sol +62 -0
  577. package/package.json +27 -7
  578. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  579. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  580. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  581. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  582. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  583. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  584. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  585. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  586. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  587. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  588. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  589. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  590. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  591. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  592. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  593. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  594. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  595. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  596. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  597. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  598. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  599. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  600. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  601. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  602. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  603. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  604. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  605. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  606. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  607. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  608. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  609. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  610. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  611. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  612. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  613. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  614. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  615. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  616. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  617. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  618. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  619. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  620. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  621. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  622. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  623. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  624. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  625. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  626. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  627. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  628. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  629. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  630. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  631. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  632. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  633. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  634. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  635. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  636. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  637. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  638. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  639. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  640. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  641. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  642. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  643. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  644. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  645. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  646. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  647. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  648. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  649. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  650. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  651. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  652. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  653. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  654. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  655. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  656. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  657. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  658. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  659. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  660. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  662. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  664. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  665. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  666. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  668. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  669. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  670. package/contracts/components/Component.sol +0 -62
  671. package/contracts/components/IPool.sol +0 -9
  672. package/contracts/components/IProduct.sol +0 -12
  673. package/contracts/components/Pool.sol +0 -29
  674. package/contracts/components/Product.sol +0 -66
  675. package/contracts/experiment/errors/Require.sol +0 -33
  676. package/contracts/experiment/errors/Revert.sol +0 -39
  677. package/contracts/experiment/inheritance/A.sol +0 -56
  678. package/contracts/experiment/inheritance/B.sol +0 -23
  679. package/contracts/experiment/inheritance/C.sol +0 -28
  680. package/contracts/experiment/inheritance/IA.sol +0 -18
  681. package/contracts/experiment/inheritance/IB.sol +0 -9
  682. package/contracts/experiment/inheritance/IC.sol +0 -11
  683. package/contracts/experiment/types/TypeA.sol +0 -42
  684. package/contracts/experiment/types/TypeB.sol +0 -24
  685. package/contracts/instance/access/Access.sol +0 -218
  686. package/contracts/instance/access/IAccess.sol +0 -83
  687. package/contracts/instance/component/ComponentModule.sol +0 -248
  688. package/contracts/instance/component/IComponent.sol +0 -95
  689. package/contracts/instance/policy/IPolicy.sol +0 -66
  690. package/contracts/instance/policy/PolicyModule.sol +0 -107
  691. package/contracts/instance/pool/IPoolModule.sol +0 -41
  692. package/contracts/instance/pool/PoolModule.sol +0 -86
  693. package/contracts/instance/product/IProductService.sol +0 -46
  694. package/contracts/instance/product/ProductService.sol +0 -108
  695. package/contracts/registry/IChainNft.sol +0 -18
  696. package/contracts/types/Blocknumber.sol +0 -60
  697. package/contracts/types/ChainId.sol +0 -30
  698. package/contracts/types/NftId.sol +0 -35
  699. package/contracts/types/Timestamp.sol +0 -55
  700. package/contracts/types/UFixed.sol +0 -211
@@ -0,0 +1,170 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IInstance} from "../instance/IInstance.sol";
5
+ import {IPolicy} from "../instance/module/IPolicy.sol";
6
+ import {IService} from "../shared/IService.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {ClaimId} from "../type/ClaimId.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {InstanceStore} from "../instance/InstanceStore.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {PayoutId} from "../type/PayoutId.sol";
14
+
15
+ interface IPoolService is IService {
16
+
17
+ event LogPoolServiceMaxBalanceAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
18
+ event LogPoolServiceWalletFunded(NftId poolNftId, address poolOwner, Amount amount);
19
+ event LogPoolServiceWalletDefunded(NftId poolNftId, address poolOwner, Amount amount);
20
+
21
+ event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
22
+ event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
23
+
24
+ event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
25
+ event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
26
+
27
+ event LogPoolServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
28
+
29
+ event LogPoolServiceProcessFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount);
30
+
31
+ event LogPoolServiceApplicationVerified(NftId poolNftId, NftId bundleNftId, NftId applicationNftId, Amount totalCollateralAmount);
32
+ event LogPoolServiceCollateralLocked(NftId poolNftId, NftId bundleNftId, NftId applicationNftId, Amount totalCollateralAmount, Amount lockedCollateralAmount);
33
+ event LogPoolServiceCollateralReleased(NftId bundleNftId, NftId policyNftId, Amount remainingCollateralAmount);
34
+ event LogPoolServiceSaleProcessed(NftId poolNftId, NftId bundleNftId, Amount bundleNetAmount, Amount bundleFeeAmount, Amount poolFeeAmount);
35
+ event LogPoolServicePayoutProcessed(NftId poolNftId, NftId bundleNftId, NftId policyNftId, PayoutId payoutId, Amount netPayoutAmount, Amount processingFeeAmount, address payoutBeneficiary);
36
+
37
+ error ErrorPoolServicePoolNotExternallyManaged(NftId poolNftId);
38
+ error ErrorPoolServicePolicyPoolMismatch(NftId policyNftId, NftId productNftId, NftId expectedProductNftId);
39
+ error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
40
+ error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
41
+ error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
42
+ error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
43
+ error ErrorPoolServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
44
+
45
+ /// @dev sets the max balance amount for the calling pool
46
+ function setMaxBalanceAmount(Amount maxBalanceAmount) external;
47
+
48
+ /// @dev locks required collateral to cover the specified application (and turn it into a policy)
49
+ /// - retention level == 1: the full collateral amount will be locked by the specified bundle
50
+ /// - retention level < 1: a part of the coverage is provided by the specified bundle, the rest by the pool component
51
+ /// in which case the pool component might hold a re-insurance policy
52
+ /// may only be called by the policy service for unlocked pool components
53
+ function lockCollateral(
54
+ IInstance instance,
55
+ address token,
56
+ NftId productNftId,
57
+ NftId applicationNftId,
58
+ NftId bundleNftId,
59
+ Amount sumInsuredAmount // premium amount after product and distribution fees
60
+ )
61
+ external
62
+ returns (
63
+ Amount localCollateralAmount,
64
+ Amount totalCollateralAmount
65
+ );
66
+
67
+
68
+ /// @dev releases the remaining collateral linked to the specified policy
69
+ /// may only be called by the policy service for unlocked pool components
70
+ function releaseCollateral(
71
+ IInstance instance,
72
+ NftId policyNftId,
73
+ IPolicy.PolicyInfo memory policyInfo
74
+ ) external;
75
+
76
+
77
+ /// @dev reduces the locked collateral in the bundle associated with the specified policy and updates pool/bundle counters
78
+ /// every payout of a policy reduces the collateral by the payout amount
79
+ /// may only be called by the claim service for unlocked pool components
80
+ function processPayout(
81
+ InstanceReader instanceReader,
82
+ InstanceStore instanceStore,
83
+ NftId productNftId,
84
+ NftId policyNftId,
85
+ NftId bundleNftId,
86
+ PayoutId payoutId,
87
+ Amount payoutAmount,
88
+ address payoutBeneficiary
89
+ ) external returns (Amount netPayoutAmount, Amount processingFeeAmount);
90
+
91
+
92
+ /// @dev increase stakes for bundle
93
+ /// staking fees will be deducted by the pool service from the staking amount
94
+ /// may only be called by registered and unlocked pool components
95
+ function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
96
+
97
+
98
+ /// @dev decrease stakes for bundle
99
+ /// performance fees will be deducted by the pool service from the staking amount
100
+ /// may only be called by registered and unlocked pool components
101
+ function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
102
+
103
+
104
+ /// @dev closes the specified bundle
105
+ /// only open bundles (active or locked) may be closed
106
+ /// to close a bundle it may not have any non-closed polices attached to it
107
+ /// bundle fees and remaining capital (after deduction of the performance fee) will be transferred to the bundle owner
108
+ /// may only be called by registered and unlocked pool components
109
+ function closeBundle(NftId bundleNftId) external;
110
+
111
+
112
+ /// @dev Withdraw bundle feeds for the specified bundle.
113
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
114
+
115
+
116
+ /// @dev Informs product about available funds to process a confirmed claim.
117
+ /// The function triggers a callback to the product component when the product's property isProcessingFundedClaims is set.
118
+ function processFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount) external;
119
+
120
+
121
+ /// @dev Fund the pool wallet with the provided amount.
122
+ /// This function will collect the amount from the pool owner and transfers it to the pool wallet.
123
+ /// The function will not update balance amounts managed by the framework.
124
+ /// Only available for externally managed pools.
125
+ function fundPoolWallet(Amount amount) external;
126
+
127
+
128
+ /// @dev Defund the specified pool wallet with the provided amount.
129
+ /// This function will transfer the amount from the pool wallet to the pool owner.
130
+ /// The function will not update balance amounts managed by the framework.
131
+ /// Only available for externally managed pools.
132
+ function defundPoolWallet(Amount amount) external;
133
+
134
+
135
+ /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
136
+ function processSale(NftId bundleNftId, IPolicy.PremiumInfo memory premium) external;
137
+
138
+
139
+ // /// @dev Calulate required collateral for the provided parameters.
140
+ // function calculateRequiredCollateral(
141
+ // InstanceReader instanceReader,
142
+ // NftId productNftId,
143
+ // Amount sumInsuredAmount
144
+ // )
145
+ // external
146
+ // view
147
+ // returns(
148
+ // NftId poolNftId,
149
+ // Amount totalCollateralAmount,
150
+ // Amount localCollateralAmount,
151
+ // bool poolIsVerifyingApplications
152
+ // );
153
+
154
+
155
+ // /// @dev calulate required collateral for the provided parameters.
156
+ // /// Collateralization is applied to sum insured.
157
+ // /// Retention level defines the fraction of the collateral that is required locally.
158
+ // function calculateRequiredCollateral(
159
+ // UFixed collateralizationLevel,
160
+ // UFixed retentionLevel,
161
+ // Amount sumInsuredAmount
162
+ // )
163
+ // external
164
+ // pure
165
+ // returns(
166
+ // Amount totalCollateralAmount,
167
+ // Amount localCollateralAmount
168
+ // );
169
+
170
+ }
@@ -0,0 +1,331 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount, AmountLib} from "../type/Amount.sol";
5
+ import {BUNDLE, COMPONENT, POLICY, POOL} from "../type/ObjectType.sol";
6
+ import {ClaimId} from "../type/ClaimId.sol";
7
+ import {IBundleService} from "./IBundleService.sol";
8
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
9
+ import {IPoolComponent} from "./IPoolComponent.sol";
10
+ import {IPoolService} from "./IPoolService.sol";
11
+ import {IComponents} from "../instance/module/IComponents.sol";
12
+ import {IComponentService} from "../shared/IComponentService.sol";
13
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
14
+ import {InstanceReader} from "../instance/InstanceReader.sol";
15
+ import {Fee} from "../type/Fee.sol";
16
+ import {NftId} from "../type/NftId.sol";
17
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
18
+ import {Seconds} from "../type/Seconds.sol";
19
+ import {Timestamp} from "../type/Timestamp.sol";
20
+ import {UFixed} from "../type/UFixed.sol";
21
+
22
+ abstract contract Pool is
23
+ InstanceLinkedComponent,
24
+ IPoolComponent
25
+ {
26
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Pool")) - 1)) & ~bytes32(uint256(0xff));
27
+ bytes32 public constant POOL_STORAGE_LOCATION_V1 = 0x25e3e51823fbfffb988e0a2744bb93722d9f3e906c07cc0a9e77884c46c58300;
28
+
29
+ struct PoolStorage {
30
+ IComponents.PoolInfo _poolInfo;
31
+ IComponentService _componentService;
32
+ IPoolService _poolService;
33
+ IBundleService _bundleService;
34
+ }
35
+
36
+
37
+ modifier onlyBundleOwner(NftId bundleNftId) {
38
+ if(msg.sender != getRegistry().ownerOf(bundleNftId)) {
39
+ revert ErrorPoolNotBundleOwner(bundleNftId, msg.sender);
40
+ }
41
+ _;
42
+ }
43
+
44
+
45
+ // TODO remove function once this is no longer used to produce contract locations on the fly ...
46
+ function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
47
+ return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
48
+ }
49
+
50
+
51
+ /// @dev see {IPoolComponent.verifyApplication}
52
+ function verifyApplication(
53
+ NftId applicationNftId,
54
+ NftId bundleNftId,
55
+ Amount collateralizationAmount
56
+ )
57
+ public
58
+ virtual
59
+ restricted()
60
+ onlyNftOfType(applicationNftId, POLICY())
61
+ {
62
+ InstanceReader reader = _getInstanceReader();
63
+ if(!applicationMatchesBundle(
64
+ applicationNftId,
65
+ reader.getPolicyInfo(applicationNftId).applicationData,
66
+ bundleNftId,
67
+ reader.getBundleInfo(bundleNftId).filter,
68
+ collateralizationAmount)
69
+ )
70
+ {
71
+ revert ErrorPoolApplicationBundleMismatch(applicationNftId);
72
+ }
73
+
74
+ emit LogPoolVerifiedByPool(address(this), applicationNftId, collateralizationAmount);
75
+ }
76
+
77
+
78
+ /// @dev see {IPoolComponent.processConfirmedClaim}
79
+ function processConfirmedClaim(
80
+ NftId policyNftId,
81
+ ClaimId claimId,
82
+ Amount amount
83
+ )
84
+ public
85
+ virtual
86
+ restricted()
87
+ onlyNftOfType(policyNftId, POLICY())
88
+ {
89
+ // default implementation is empty
90
+ }
91
+
92
+
93
+ /// @dev see {IPoolComponent.applicationMatchesBundle}
94
+ /// Default implementation always returns true.
95
+ /// Override this function to implement any custom application verification.
96
+ /// Calling super.applicationMatchesBundle will ensure validation of application and bundle nft ids.
97
+ function applicationMatchesBundle(
98
+ NftId applicationNftId,
99
+ bytes memory applicationData,
100
+ NftId bundleNftId,
101
+ bytes memory bundleFilter,
102
+ Amount collateralizationAmount
103
+ )
104
+ public
105
+ virtual
106
+ view
107
+ onlyNftOfType(applicationNftId, POLICY())
108
+ onlyNftOfType(bundleNftId, BUNDLE())
109
+ returns (bool isMatching)
110
+ {
111
+ return true;
112
+ }
113
+
114
+
115
+ function getInitialPoolInfo()
116
+ public
117
+ virtual
118
+ view
119
+ returns (IComponents.PoolInfo memory poolInfo)
120
+ {
121
+ return _getPoolStorage()._poolInfo;
122
+ }
123
+
124
+ // Internals
125
+
126
+ function __Pool_init(
127
+ address registry,
128
+ NftId productNftId,
129
+ string memory name,
130
+ IComponents.PoolInfo memory poolInfo,
131
+ IAuthorization authorization,
132
+ address initialOwner
133
+ )
134
+ internal
135
+ virtual
136
+ onlyInitializing()
137
+ {
138
+ __InstanceLinkedComponent_init(
139
+ registry,
140
+ productNftId,
141
+ name,
142
+ POOL(),
143
+ authorization,
144
+ poolInfo.isInterceptingBundleTransfers,
145
+ initialOwner);
146
+
147
+ PoolStorage storage $ = _getPoolStorage();
148
+
149
+ $._poolInfo = poolInfo;
150
+ $._poolService = IPoolService(_getServiceAddress(POOL()));
151
+ $._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
152
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
153
+
154
+ _registerInterface(type(IPoolComponent).interfaceId);
155
+ }
156
+
157
+
158
+ /// @dev Update pool fees to the specified values.
159
+ /// Pool fee: are deducted from the premium amount and goes to the pool owner.
160
+ /// Staking fee: are deducted from the staked tokens by a bundle owner and goes to the pool owner.
161
+ /// Performance fee: when a bundle is closed a bundle specific profit is calculated.
162
+ /// The performance fee is deducted from this profit and goes to the pool owner.
163
+ function _setPoolFees(
164
+ Fee memory poolFee,
165
+ Fee memory stakingFee,
166
+ Fee memory performanceFee
167
+ )
168
+ internal
169
+ virtual
170
+ {
171
+ _getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
172
+ }
173
+
174
+
175
+ /// @dev Sets the maximum balance amound held by this pool.
176
+ /// Function may only be called by pool owner.
177
+ function _setMaxBalanceAmount(Amount maxBalanceAmount)
178
+ internal
179
+ virtual
180
+ {
181
+ _getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
182
+ }
183
+
184
+
185
+ /// @dev Fund the pool wallet with the specified amount.
186
+ /// Function is only available for externally managed pools.
187
+ function _fundPoolWallet(Amount amount)
188
+ internal
189
+ virtual
190
+ {
191
+ _getPoolStorage()._poolService.fundPoolWallet(amount);
192
+ }
193
+
194
+
195
+ /// @dev Withdraw the specified amount from the pool wallet.
196
+ /// Function is only available for externally managed pools.
197
+ function _defundPoolWallet(Amount amount)
198
+ internal
199
+ virtual
200
+ {
201
+ _getPoolStorage()._poolService.defundPoolWallet(amount);
202
+ }
203
+
204
+
205
+ /// @dev Creates a new empty bundle using the provided parameter values.
206
+ function _createBundle(
207
+ address bundleOwner,
208
+ Fee memory fee,
209
+ Seconds lifetime,
210
+ bytes memory filter
211
+ )
212
+ internal
213
+ returns(NftId bundleNftId)
214
+ {
215
+ bundleNftId = _getPoolStorage()._bundleService.create(
216
+ bundleOwner,
217
+ fee,
218
+ lifetime,
219
+ filter);
220
+
221
+ // TODO add logging
222
+ }
223
+
224
+
225
+ /// @dev Sets the fee for the specified bundle.
226
+ /// The fee is added on top of the poolFee and deducted from the premium amounts
227
+ /// Via these fees individual bundler owner may earn income per policy in the context of peer to peer pools.
228
+ function _setBundleFee(
229
+ NftId bundleNftId,
230
+ Fee memory fee
231
+ )
232
+ internal
233
+ virtual
234
+ {
235
+ _getPoolStorage()._bundleService.setFee(bundleNftId, fee);
236
+ }
237
+
238
+
239
+ /// @dev increases the staked tokens by the specified amount
240
+ /// bundle MUST be in active or locked state
241
+ function _stake(
242
+ NftId bundleNftId,
243
+ Amount amount
244
+ )
245
+ internal
246
+ virtual
247
+ returns(Amount)
248
+ {
249
+ return _getPoolStorage()._poolService.stake(bundleNftId, amount);
250
+ }
251
+
252
+
253
+ /// @dev decreases the staked tokens by the specified amount
254
+ /// bundle MUST be in active, locked or closed state
255
+ function _unstake(
256
+ NftId bundleNftId,
257
+ Amount amount
258
+ )
259
+ internal
260
+ virtual
261
+ returns(Amount netAmount)
262
+ {
263
+ return _getPoolStorage()._poolService.unstake(bundleNftId, amount);
264
+ }
265
+
266
+
267
+ /// @dev extends the bundle lifetime of the bundle by the specified time
268
+ /// bundle MUST be in active or locked state
269
+ function _extend(
270
+ NftId bundleNftId,
271
+ Seconds lifetimeExtension
272
+ )
273
+ internal
274
+ virtual
275
+ returns (Timestamp extendedExpiredAt)
276
+ {
277
+ return _getPoolStorage()._bundleService.extend(bundleNftId, lifetimeExtension);
278
+ }
279
+
280
+
281
+ /// @dev Locks the specified bundle.
282
+ /// A bundle to be locked MUST be in active state.
283
+ /// Locked bundles may not be used to collateralize any new policy.
284
+ function _setBundleLocked(NftId bundleNftId, bool locked)
285
+ internal
286
+ virtual
287
+ {
288
+ _getPoolStorage()._bundleService.setLocked(bundleNftId, locked);
289
+ }
290
+
291
+
292
+ /// @dev Close the specified bundle.
293
+ /// A bundle to be closed MUST be in active or locked state.
294
+ /// To close a bundle all all linked policies MUST be in closed state as well.
295
+ /// Closing a bundle finalizes the bundle bookkeeping including overall profit calculation.
296
+ /// Once a bundle is closed this action cannot be reversed.
297
+ function _closeBundle(NftId bundleNftId)
298
+ internal
299
+ virtual
300
+ {
301
+ _getPoolStorage()._poolService.closeBundle(bundleNftId);
302
+ }
303
+
304
+
305
+ /// @dev Withdraws the specified amount of fees from the bundle.
306
+ function _withdrawBundleFees(NftId bundleNftId, Amount amount)
307
+ internal
308
+ returns (Amount withdrawnAmount)
309
+ {
310
+ return _getPoolStorage()._poolService.withdrawBundleFees(bundleNftId, amount);
311
+ }
312
+
313
+
314
+ function _processFundedClaim(
315
+ NftId policyNftId,
316
+ ClaimId claimId,
317
+ Amount availableAmount
318
+ )
319
+ internal
320
+ {
321
+ _getPoolStorage()._poolService.processFundedClaim(
322
+ policyNftId, claimId, availableAmount);
323
+ }
324
+
325
+
326
+ function _getPoolStorage() private pure returns (PoolStorage storage $) {
327
+ assembly {
328
+ $.slot := POOL_STORAGE_LOCATION_V1
329
+ }
330
+ }
331
+ }