@etherisc/gif-next 0.0.2-952752e-374 → 0.0.2-957bd35-589

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 (491) hide show
  1. package/README.md +63 -312
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +690 -296
  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 +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +438 -35
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +529 -221
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +191 -21
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +66 -154
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +427 -53
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -98
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +512 -204
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +167 -77
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -97
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +358 -82
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +109 -110
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +401 -59
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -142
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +426 -52
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +128 -178
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +426 -52
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -73
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -148
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +401 -59
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +360 -193
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +426 -52
  63. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  64. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  67. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  68. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +482 -28
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +355 -12
  73. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  74. package/artifacts/contracts/instance/Instance.sol/Instance.json +520 -85
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1037 -437
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -71
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +674 -487
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +387 -64
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -52
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1328 -2007
  87. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  88. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +33 -45
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +425 -54
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -31
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -31
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +87 -42
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -79
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +401 -59
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +280 -209
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +134 -68
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +174 -87
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -41
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +306 -166
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -41
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +547 -340
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +162 -68
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +273 -50
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +123 -41
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -58
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +426 -52
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +137 -139
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -82
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +208 -1
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +45 -23
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +133 -65
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +50 -0
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -52
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +231 -19
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +245 -161
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +146 -80
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +116 -114
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +115 -65
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +40 -52
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +279 -43
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +111 -41
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +52 -22
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +90 -60
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +824 -430
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +933 -457
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +202 -126
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +19 -31
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +206 -252
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +130 -72
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +130 -39
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -31
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +111 -157
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -31
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  231. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
  236. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  239. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  241. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -31
  243. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  245. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  246. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  248. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  249. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  250. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  253. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  254. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +62 -161
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  261. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  262. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  263. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1453 -153
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +187 -107
  266. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  267. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  268. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  269. package/artifacts/contracts/staking/Staking.sol/Staking.json +1565 -239
  270. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  272. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +146 -67
  274. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
  276. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +229 -157
  278. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -45
  280. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1633 -819
  282. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  283. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  285. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +159 -87
  286. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Amount.sol/AmountLib.json +10 -10
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  291. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  292. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  293. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  295. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  297. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
  299. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  301. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  302. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  303. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  305. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  306. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  307. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  309. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  311. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  313. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  315. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +9 -4
  317. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  319. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  321. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  323. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  325. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  328. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
  330. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
  332. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  334. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -2
  336. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  337. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  338. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  339. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
  340. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  342. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  343. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  344. package/contracts/accounting/AccountingService.sol +15 -3
  345. package/contracts/accounting/IAccountingService.sol +4 -2
  346. package/contracts/authorization/AccessAdmin.sol +364 -344
  347. package/contracts/authorization/AccessAdminLib.sol +678 -0
  348. package/contracts/authorization/AccessManagerCloneable.sol +23 -32
  349. package/contracts/authorization/Authorization.sol +161 -260
  350. package/contracts/authorization/IAccess.sol +29 -12
  351. package/contracts/authorization/IAccessAdmin.sol +85 -83
  352. package/contracts/authorization/IAuthorization.sol +9 -43
  353. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  354. package/contracts/authorization/ServiceAuthorization.sol +228 -34
  355. package/contracts/distribution/BasicDistribution.sol +14 -13
  356. package/contracts/distribution/BasicDistributionAuthorization.sol +29 -9
  357. package/contracts/distribution/Distribution.sol +22 -64
  358. package/contracts/distribution/DistributionService.sol +166 -75
  359. package/contracts/distribution/IDistributionComponent.sol +3 -10
  360. package/contracts/distribution/IDistributionService.sol +34 -19
  361. package/contracts/examples/fire/FirePool.sol +0 -4
  362. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -1
  363. package/contracts/examples/fire/FireProduct.sol +7 -12
  364. package/contracts/examples/fire/FireProductAuthorization.sol +1 -1
  365. package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
  366. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +1 -1
  367. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  368. package/contracts/examples/unpermissioned/SimplePool.sol +0 -5
  369. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +1 -1
  370. package/contracts/examples/unpermissioned/SimpleProduct.sol +94 -27
  371. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +1 -1
  372. package/contracts/instance/BaseStore.sol +93 -0
  373. package/contracts/instance/IBaseStore.sol +37 -0
  374. package/contracts/instance/IInstance.sol +103 -13
  375. package/contracts/instance/IInstanceService.sol +54 -7
  376. package/contracts/instance/Instance.sol +177 -61
  377. package/contracts/instance/InstanceAdmin.sol +199 -218
  378. package/contracts/instance/InstanceAuthorizationV3.sol +120 -70
  379. package/contracts/instance/InstanceReader.sol +392 -382
  380. package/contracts/instance/InstanceService.sol +283 -173
  381. package/contracts/instance/InstanceStore.sol +153 -128
  382. package/contracts/instance/ProductStore.sol +290 -0
  383. package/contracts/instance/RiskSet.sol +10 -2
  384. package/contracts/instance/TargetNames.sol +10 -0
  385. package/contracts/instance/base/BalanceStore.sol +4 -6
  386. package/contracts/instance/base/ObjectLifecycle.sol +2 -6
  387. package/contracts/instance/module/IBundle.sol +6 -5
  388. package/contracts/instance/module/IComponents.sol +15 -6
  389. package/contracts/instance/module/IDistribution.sol +21 -8
  390. package/contracts/instance/module/IPolicy.sol +28 -8
  391. package/contracts/instance/module/IRisk.sol +2 -0
  392. package/contracts/oracle/BasicOracle.sol +3 -6
  393. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  394. package/contracts/oracle/IOracle.sol +9 -4
  395. package/contracts/oracle/Oracle.sol +4 -8
  396. package/contracts/oracle/OracleService.sol +8 -8
  397. package/contracts/pool/BasicPool.sol +4 -18
  398. package/contracts/pool/BasicPoolAuthorization.sol +29 -16
  399. package/contracts/pool/BundleService.sol +57 -96
  400. package/contracts/pool/IBundleService.sol +27 -32
  401. package/contracts/pool/IPoolService.sol +57 -40
  402. package/contracts/pool/Pool.sol +15 -29
  403. package/contracts/pool/PoolLib.sol +341 -0
  404. package/contracts/pool/PoolService.sol +189 -190
  405. package/contracts/product/ApplicationService.sol +85 -17
  406. package/contracts/product/BasicProduct.sol +2 -5
  407. package/contracts/product/BasicProductAuthorization.sol +31 -9
  408. package/contracts/product/ClaimService.sol +112 -194
  409. package/contracts/product/IApplicationService.sol +24 -2
  410. package/contracts/product/IClaimService.sol +6 -6
  411. package/contracts/product/IPolicyService.sol +20 -8
  412. package/contracts/product/IPricingService.sol +1 -0
  413. package/contracts/product/IRiskService.sol +25 -10
  414. package/contracts/product/PolicyService.sol +110 -201
  415. package/contracts/product/PolicyServiceLib.sol +139 -0
  416. package/contracts/product/PricingService.sol +33 -31
  417. package/contracts/product/Product.sol +61 -33
  418. package/contracts/product/RiskService.sol +63 -25
  419. package/contracts/registry/IRegistry.sol +17 -9
  420. package/contracts/registry/IRelease.sol +6 -3
  421. package/contracts/registry/Registry.sol +19 -9
  422. package/contracts/registry/RegistryAdmin.sol +85 -256
  423. package/contracts/registry/RegistryAuthorization.sol +337 -0
  424. package/contracts/registry/RegistryService.sol +1 -1
  425. package/contracts/registry/ReleaseAdmin.sol +70 -116
  426. package/contracts/registry/ReleaseRegistry.sol +57 -43
  427. package/contracts/registry/ServiceAuthorizationV3.sol +131 -31
  428. package/contracts/registry/TokenRegistry.sol +56 -52
  429. package/contracts/shared/Component.sol +19 -35
  430. package/contracts/shared/ComponentService.sol +281 -290
  431. package/contracts/shared/ContractLib.sol +137 -77
  432. package/contracts/shared/IComponent.sol +1 -4
  433. package/contracts/shared/IComponentService.sol +21 -26
  434. package/contracts/shared/INftOwnable.sol +2 -0
  435. package/contracts/shared/IRegisterable.sol +0 -1
  436. package/contracts/shared/InitializableERC165.sol +9 -1
  437. package/contracts/shared/InstanceLinkedComponent.sol +8 -13
  438. package/contracts/shared/NftOwnable.sol +4 -2
  439. package/contracts/shared/PolicyHolder.sol +3 -2
  440. package/contracts/shared/Registerable.sol +1 -4
  441. package/contracts/shared/Service.sol +6 -4
  442. package/contracts/shared/TokenHandler.sol +44 -91
  443. package/contracts/staking/IStaking.sol +265 -72
  444. package/contracts/staking/IStakingService.sol +45 -75
  445. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  446. package/contracts/staking/Staking.sol +475 -204
  447. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
  448. package/contracts/staking/StakingManager.sol +4 -3
  449. package/contracts/staking/StakingReader.sol +58 -77
  450. package/contracts/staking/StakingService.sol +62 -180
  451. package/contracts/staking/StakingServiceManager.sol +6 -4
  452. package/contracts/staking/StakingStore.sol +1093 -330
  453. package/contracts/staking/TargetHandler.sol +132 -0
  454. package/contracts/staking/TargetManagerLib.sol +69 -46
  455. package/contracts/type/Amount.sol +4 -0
  456. package/contracts/type/Blocknumber.sol +17 -22
  457. package/contracts/type/ChainId.sol +101 -0
  458. package/contracts/type/Fee.sol +8 -8
  459. package/contracts/type/NftId.sol +3 -3
  460. package/contracts/type/ObjectType.sol +69 -52
  461. package/contracts/type/RiskId.sol +4 -3
  462. package/contracts/type/RoleId.sol +60 -45
  463. package/contracts/type/Seconds.sol +19 -0
  464. package/contracts/type/Selector.sol +5 -0
  465. package/contracts/type/String.sol +12 -0
  466. package/contracts/type/Timestamp.sol +4 -2
  467. package/contracts/type/UFixed.sol +28 -10
  468. package/contracts/type/Version.sol +39 -0
  469. package/contracts/upgradeability/IVersionable.sol +3 -0
  470. package/contracts/upgradeability/ProxyManager.sol +26 -12
  471. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  472. package/contracts/upgradeability/Versionable.sol +6 -3
  473. package/package.json +2 -2
  474. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  475. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
  476. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  477. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  478. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  479. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
  480. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  481. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  482. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
  483. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  484. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  485. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  486. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  487. package/contracts/instance/module/IAccess.sol +0 -46
  488. package/contracts/shared/ComponentVerifyingService.sol +0 -128
  489. package/contracts/shared/IKeyValueStore.sol +0 -54
  490. package/contracts/shared/KeyValueStore.sol +0 -131
  491. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -123,30 +123,26 @@ abstract contract Pool is
123
123
 
124
124
  // Internals
125
125
 
126
- function _initializePool(
126
+ function __Pool_init(
127
127
  address registry,
128
128
  NftId productNftId,
129
129
  string memory name,
130
- address token,
131
130
  IComponents.PoolInfo memory poolInfo,
132
131
  IAuthorization authorization,
133
- address initialOwner,
134
- bytes memory componentData // component specifidc data
132
+ address initialOwner
135
133
  )
136
134
  internal
137
135
  virtual
138
136
  onlyInitializing()
139
137
  {
140
- _initializeInstanceLinkedComponent(
138
+ __InstanceLinkedComponent_init(
141
139
  registry,
142
140
  productNftId,
143
141
  name,
144
- token,
145
142
  POOL(),
146
143
  authorization,
147
144
  poolInfo.isInterceptingBundleTransfers,
148
- initialOwner,
149
- componentData);
145
+ initialOwner);
150
146
 
151
147
  PoolStorage storage $ = _getPoolStorage();
152
148
 
@@ -240,15 +236,6 @@ abstract contract Pool is
240
236
  }
241
237
 
242
238
 
243
- /// @dev Withdraws the specified amount of fees from the bundle.
244
- function _withdrawBundleFees(NftId bundleNftId, Amount amount)
245
- internal
246
- returns (Amount withdrawnAmount)
247
- {
248
- return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
249
- }
250
-
251
-
252
239
  /// @dev increases the staked tokens by the specified amount
253
240
  /// bundle MUST be in active or locked state
254
241
  function _stake(
@@ -294,21 +281,11 @@ abstract contract Pool is
294
281
  /// @dev Locks the specified bundle.
295
282
  /// A bundle to be locked MUST be in active state.
296
283
  /// Locked bundles may not be used to collateralize any new policy.
297
- function _lockBundle(NftId bundleNftId)
298
- internal
299
- virtual
300
- {
301
- _getPoolStorage()._bundleService.lock(bundleNftId);
302
- }
303
-
304
-
305
- /// @dev Unlocks the specified bundle.
306
- /// A bundle to be unlocked MUST be in locked state.
307
- function _unlockBundle(NftId bundleNftId)
284
+ function _setBundleLocked(NftId bundleNftId, bool locked)
308
285
  internal
309
286
  virtual
310
287
  {
311
- _getPoolStorage()._bundleService.unlock(bundleNftId);
288
+ _getPoolStorage()._bundleService.setLocked(bundleNftId, locked);
312
289
  }
313
290
 
314
291
 
@@ -325,6 +302,15 @@ abstract contract Pool is
325
302
  }
326
303
 
327
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
+
328
314
  function _processFundedClaim(
329
315
  NftId policyNftId,
330
316
  ClaimId claimId,
@@ -0,0 +1,341 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IComponents} from "../instance/module/IComponents.sol";
5
+ import {IInstance} from "../instance/IInstance.sol";
6
+ import {INftOwnable} from "../shared/INftOwnable.sol";
7
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
8
+ import {IPoolService} from "./IPoolService.sol";
9
+ import {IRegistry} from "../registry/IRegistry.sol";
10
+
11
+ import {Amount, AmountLib} from "../type/Amount.sol";
12
+ import {ContractLib} from "../shared/ContractLib.sol";
13
+ import {Fee, FeeLib} from "../type/Fee.sol";
14
+ import {InstanceReader} from "../instance/InstanceReader.sol";
15
+ import {InstanceStore} from "../instance/InstanceStore.sol";
16
+ import {NftId} from "../type/NftId.sol";
17
+ import {ObjectType, BUNDLE, POOL} from "../type/ObjectType.sol";
18
+ import {PayoutId} from "../type/PayoutId.sol";
19
+ import {TokenHandler} from "../shared/TokenHandler.sol";
20
+ import {UFixed} from "../type/UFixed.sol";
21
+
22
+ library PoolLib {
23
+
24
+ /// @dev Calulate required collateral for the provided parameters.
25
+ function calculateRequiredCollateral(
26
+ InstanceReader instanceReader,
27
+ NftId productNftId,
28
+ Amount sumInsuredAmount
29
+ )
30
+ public
31
+ view
32
+ returns(
33
+ NftId poolNftId,
34
+ Amount totalCollateralAmount,
35
+ Amount localCollateralAmount,
36
+ bool poolIsVerifyingApplications
37
+ )
38
+ {
39
+ poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
40
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
41
+ poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
42
+
43
+ (
44
+ totalCollateralAmount,
45
+ localCollateralAmount
46
+ ) = calculateRequiredCollateral(
47
+ poolInfo.collateralizationLevel,
48
+ poolInfo.retentionLevel,
49
+ sumInsuredAmount);
50
+ }
51
+
52
+
53
+ /// @dev calulate required collateral for the provided parameters.
54
+ /// Collateralization is applied to sum insured.
55
+ /// Retention level defines the fraction of the collateral that is required locally.
56
+ function calculateRequiredCollateral(
57
+ UFixed collateralizationLevel,
58
+ UFixed retentionLevel,
59
+ Amount sumInsuredAmount
60
+ )
61
+ public
62
+ pure
63
+ returns(
64
+ Amount totalCollateralAmount,
65
+ Amount localCollateralAmount
66
+ )
67
+ {
68
+ // collateralization is applied to sum insured
69
+ UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
70
+ totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
71
+
72
+ // retention level defines how much capital is required locally
73
+ localCollateralAmount = AmountLib.toAmount(
74
+ (retentionLevel * totalUFixed).toInt());
75
+ }
76
+
77
+
78
+ function calculateStakingAmounts(
79
+ IRegistry registry,
80
+ InstanceReader instanceReader,
81
+ NftId poolNftId,
82
+ Amount stakingAmount
83
+ )
84
+ public
85
+ view
86
+ returns (
87
+ Amount feeAmount,
88
+ Amount netStakingAmount
89
+ )
90
+ {
91
+ NftId productNftId = registry.getParentNftId(poolNftId);
92
+ Fee memory stakingFee = instanceReader.getFeeInfo(productNftId).stakingFee;
93
+ (
94
+ feeAmount,
95
+ netStakingAmount
96
+ ) = FeeLib.calculateFee(
97
+ stakingFee,
98
+ stakingAmount);
99
+ }
100
+
101
+
102
+ function calculatePayoutAmounts(
103
+ IRegistry registry,
104
+ InstanceReader instanceReader,
105
+ NftId productNftId,
106
+ NftId policyNftId,
107
+ Amount payoutAmount,
108
+ address payoutBeneficiary
109
+ )
110
+ public
111
+ view
112
+ returns (
113
+ Amount netPayoutAmount,
114
+ Amount processingFeeAmount,
115
+ address beneficiary
116
+ )
117
+ {
118
+ // Amount payoutAmount = payoutInfo.amount;
119
+
120
+ if(payoutAmount.gtz()) {
121
+ netPayoutAmount = payoutAmount;
122
+
123
+ if (payoutBeneficiary == address(0)) {
124
+ beneficiary = registry.ownerOf(policyNftId);
125
+ } else {
126
+ beneficiary = payoutBeneficiary;
127
+ }
128
+
129
+ // calculate processing fees if applicable
130
+ IComponents.FeeInfo memory feeInfo = instanceReader.getFeeInfo(productNftId);
131
+ if(FeeLib.gtz(feeInfo.processingFee)) {
132
+ (processingFeeAmount, netPayoutAmount) = FeeLib.calculateFee(feeInfo.processingFee, payoutAmount);
133
+ }
134
+ }
135
+ }
136
+
137
+
138
+ function getPolicyHolder(
139
+ IRegistry registry,
140
+ NftId policyNftId
141
+ )
142
+ internal
143
+ view
144
+ returns (IPolicyHolder policyHolder)
145
+ {
146
+ address policyHolderAddress = registry.ownerOf(policyNftId);
147
+ policyHolder = IPolicyHolder(policyHolderAddress);
148
+
149
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
150
+ policyHolder = IPolicyHolder(address(0));
151
+ }
152
+ }
153
+
154
+
155
+ function checkAndGetPoolInfo(
156
+ IRegistry registry,
157
+ address sender,
158
+ NftId bundleNftId
159
+ )
160
+ public
161
+ view
162
+ returns (
163
+ InstanceReader instanceReader,
164
+ InstanceStore instanceStore,
165
+ NftId instanceNftId,
166
+ NftId poolNftId,
167
+ IComponents.PoolInfo memory poolInfo
168
+ )
169
+ {
170
+ checkNftType(registry, bundleNftId, BUNDLE());
171
+
172
+ IInstance instance;
173
+ (poolNftId, instance) = getAndVerifyActivePool(registry, sender);
174
+ instanceReader = instance.getInstanceReader();
175
+ instanceStore = instance.getInstanceStore();
176
+ instanceNftId = instance.getNftId();
177
+ poolInfo = instanceReader.getPoolInfo(poolNftId);
178
+
179
+ if (registry.getParentNftId(bundleNftId) != poolNftId) {
180
+ revert IPoolService.ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
181
+ }
182
+ }
183
+
184
+
185
+ function getAndVerifyActivePool(
186
+ IRegistry registry,
187
+ address sender
188
+ )
189
+ public
190
+ view
191
+ returns (
192
+ NftId poolNftId,
193
+ IInstance instance
194
+ )
195
+ {
196
+ (
197
+ IRegistry.ObjectInfo memory info,
198
+ address instanceAddress
199
+ ) = ContractLib.getAndVerifyComponent(
200
+ registry,
201
+ sender,
202
+ POOL(),
203
+ true); // only active pools
204
+
205
+ poolNftId = info.nftId;
206
+ instance = IInstance(instanceAddress);
207
+ }
208
+
209
+
210
+ function getAndVerifyActiveComponent(
211
+ IRegistry registry,
212
+ address sender,
213
+ ObjectType expectedComponentType
214
+ )
215
+ public
216
+ view
217
+ returns (
218
+ NftId componentNftId,
219
+ IInstance instance
220
+ )
221
+ {
222
+ (
223
+ IRegistry.ObjectInfo memory info,
224
+ address instanceAddress
225
+ ) = ContractLib.getAndVerifyComponent(
226
+ registry,
227
+ sender,
228
+ expectedComponentType,
229
+ true); // only active components
230
+
231
+ componentNftId = info.nftId;
232
+ instance = IInstance(instanceAddress);
233
+ }
234
+
235
+ function checkNftType(
236
+ IRegistry registry,
237
+ NftId nftId,
238
+ ObjectType expectedObjectType
239
+ ) internal view {
240
+ if(!registry.isObjectType(nftId, expectedObjectType)) {
241
+ revert INftOwnable.ErrorNftOwnableInvalidType(nftId, expectedObjectType);
242
+ }
243
+ }
244
+
245
+ function transferTokenAndNotifyPolicyHolder(
246
+ IRegistry registry,
247
+ InstanceReader instanceReader,
248
+ TokenHandler poolTokenHandler,
249
+ NftId productNftId,
250
+ NftId policyNftId,
251
+ PayoutId payoutId,
252
+ Amount payoutAmount,
253
+ address payoutBeneficiary
254
+ )
255
+ external
256
+ returns (
257
+ Amount netPayoutAmount,
258
+ Amount processingFeeAmount
259
+ )
260
+ {
261
+ address beneficiary;
262
+
263
+ (
264
+ netPayoutAmount,
265
+ processingFeeAmount,
266
+ beneficiary
267
+ ) = calculatePayoutAmounts(
268
+ registry,
269
+ instanceReader,
270
+ productNftId,
271
+ policyNftId,
272
+ payoutAmount,
273
+ payoutBeneficiary);
274
+
275
+ // 1st token tx to payout to beneficiary
276
+ poolTokenHandler.pushToken(
277
+ beneficiary,
278
+ netPayoutAmount);
279
+
280
+ // 2nd token tx to transfer processing fees to product wallet
281
+ // if processingFeeAmount > 0
282
+ if (processingFeeAmount.gtz()) {
283
+ poolTokenHandler.pushToken(
284
+ instanceReader.getWallet(productNftId),
285
+ processingFeeAmount);
286
+ }
287
+
288
+ // callback to policy holder if applicable
289
+ policyHolderPayoutExecuted(
290
+ registry,
291
+ policyNftId,
292
+ payoutId,
293
+ beneficiary,
294
+ netPayoutAmount);
295
+ }
296
+
297
+ function policyHolderPayoutExecuted(
298
+ IRegistry registry,
299
+ NftId policyNftId,
300
+ PayoutId payoutId,
301
+ address beneficiary,
302
+ Amount payoutAmount
303
+ )
304
+ private
305
+ {
306
+ IPolicyHolder policyHolder = getPolicyHolder(registry, policyNftId);
307
+ if(address(policyHolder) != address(0)) {
308
+ policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
309
+ }
310
+ }
311
+
312
+ /// @dev Transfers the specified amount from the "from account" to the pool's wallet
313
+ function pullStakingAmount(
314
+ InstanceReader reader,
315
+ NftId poolNftId,
316
+ address from,
317
+ Amount amount
318
+ )
319
+ external
320
+ {
321
+ IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
322
+ info.tokenHandler.pullToken(
323
+ from,
324
+ amount);
325
+ }
326
+
327
+ /// @dev Transfers the specified amount from the pool's wallet to the "to account"
328
+ function pushUnstakingAmount(
329
+ InstanceReader reader,
330
+ NftId poolNftId,
331
+ address to,
332
+ Amount amount
333
+ )
334
+ external
335
+ {
336
+ IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
337
+ info.tokenHandler.pushToken(
338
+ to,
339
+ amount);
340
+ }
341
+ }