@etherisc/gif-next 0.0.2-8ce6c0b-352 → 0.0.2-8d69bcd-543

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 (515) hide show
  1. package/README.md +46 -8
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +158 -70
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +166 -16
  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 +97 -37
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +81 -15
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +166 -376
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +144 -27
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +103 -321
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +245 -315
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +125 -123
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +115 -143
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +128 -76
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1487 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +555 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2048 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +527 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1495 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +527 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1211 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1663 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +555 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2416 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +527 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +194 -154
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +372 -136
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +120 -90
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +919 -315
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +131 -266
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -92
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +619 -492
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +116 -326
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +146 -29
  109. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +102 -130
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +90 -308
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +143 -387
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +172 -27
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +434 -201
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +163 -97
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +270 -27
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +124 -195
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +448 -217
  134. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  135. package/artifacts/contracts/pool/Pool.sol/Pool.json +109 -370
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  137. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +569 -396
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -91
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  141. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  145. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +243 -400
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  147. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +143 -26
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  149. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +435 -212
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  151. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +145 -107
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +318 -8
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +361 -113
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  161. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +235 -202
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  163. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +57 -4
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  165. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +486 -333
  166. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +149 -99
  168. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
  170. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
  172. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  173. package/artifacts/contracts/product/Product.sol/Product.json +241 -398
  174. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  176. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  178. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  180. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +334 -34
  182. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  184. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  186. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  187. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  188. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/Registry.sol/Registry.json +540 -95
  190. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +275 -160
  192. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  193. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  194. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
  196. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  197. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
  198. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  199. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  200. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +412 -246
  202. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  204. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  205. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  206. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  207. package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
  208. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  209. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +508 -551
  210. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  211. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +137 -125
  212. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  213. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  214. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  222. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
  224. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +454 -210
  226. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +102 -130
  228. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  231. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  234. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  238. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  241. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  242. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  243. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  244. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +89 -307
  245. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  246. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  247. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  249. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  250. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  251. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  252. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  253. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  254. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  255. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  256. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  257. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  258. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  259. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  260. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  261. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  262. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +589 -15
  263. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  264. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  265. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  266. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +140 -0
  267. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  268. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +134 -125
  269. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  270. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +55 -23
  271. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  273. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  274. package/artifacts/contracts/staking/Staking.sol/Staking.json +212 -360
  275. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  277. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +125 -94
  279. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  281. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +100 -171
  283. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  284. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -85
  285. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  286. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +153 -107
  287. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  288. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  289. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  290. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  292. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  294. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  296. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  298. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  300. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  302. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  303. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  304. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  306. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  307. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  308. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  310. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  312. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  314. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  316. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +118 -5
  318. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  320. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  322. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  326. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  329. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
  331. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  333. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  335. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  336. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  337. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
  338. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  339. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  340. package/contracts/accounting/AccountingService.sol +262 -0
  341. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  342. package/contracts/accounting/IAccountingService.sol +45 -0
  343. package/contracts/authorization/AccessAdmin.sol +189 -124
  344. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  345. package/contracts/authorization/Authorization.sol +300 -202
  346. package/contracts/authorization/IAccess.sol +1 -0
  347. package/contracts/authorization/IAccessAdmin.sol +10 -6
  348. package/contracts/authorization/IAuthorization.sol +19 -7
  349. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  350. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  351. package/contracts/distribution/BasicDistribution.sol +12 -22
  352. package/contracts/distribution/BasicDistributionAuthorization.sol +3 -11
  353. package/contracts/distribution/Distribution.sol +36 -50
  354. package/contracts/distribution/DistributionService.sol +122 -117
  355. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  356. package/contracts/distribution/IDistributionComponent.sol +2 -2
  357. package/contracts/distribution/IDistributionService.sol +16 -14
  358. package/contracts/examples/fire/DamageLevel.sol +59 -0
  359. package/contracts/examples/fire/FirePool.sol +90 -0
  360. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  361. package/contracts/examples/fire/FireProduct.sol +438 -0
  362. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  363. package/contracts/examples/fire/FireUSD.sol +26 -0
  364. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  365. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  366. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  367. package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
  368. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  369. package/contracts/examples/unpermissioned/SimpleProduct.sol +370 -0
  370. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  371. package/contracts/instance/BundleSet.sol +42 -38
  372. package/contracts/instance/IInstance.sol +21 -37
  373. package/contracts/instance/IInstanceService.sol +9 -29
  374. package/contracts/instance/Instance.sol +59 -66
  375. package/contracts/instance/InstanceAdmin.sol +254 -84
  376. package/contracts/instance/InstanceAuthorizationV3.sol +56 -47
  377. package/contracts/instance/InstanceReader.sol +218 -27
  378. package/contracts/instance/InstanceService.sol +125 -164
  379. package/contracts/instance/InstanceServiceManager.sol +6 -7
  380. package/contracts/instance/InstanceStore.sol +24 -2
  381. package/contracts/instance/RiskSet.sol +118 -0
  382. package/contracts/instance/base/ObjectCounter.sol +1 -2
  383. package/contracts/instance/base/ObjectLifecycle.sol +11 -4
  384. package/contracts/instance/base/ObjectSet.sol +31 -33
  385. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  386. package/contracts/instance/module/IBundle.sol +1 -1
  387. package/contracts/instance/module/IComponents.sol +14 -14
  388. package/contracts/instance/module/IDistribution.sol +0 -1
  389. package/contracts/instance/module/IPolicy.sol +26 -25
  390. package/contracts/instance/module/IRisk.sol +3 -0
  391. package/contracts/mock/Dip.sol +1 -1
  392. package/contracts/oracle/BasicOracle.sol +0 -1
  393. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  394. package/contracts/oracle/IOracleService.sol +2 -1
  395. package/contracts/oracle/Oracle.sol +9 -23
  396. package/contracts/oracle/OracleService.sol +113 -81
  397. package/contracts/oracle/OracleServiceManager.sol +6 -6
  398. package/contracts/pool/BasicPool.sol +38 -27
  399. package/contracts/pool/BasicPoolAuthorization.sol +15 -8
  400. package/contracts/pool/BundleService.sol +221 -80
  401. package/contracts/pool/BundleServiceManager.sol +6 -6
  402. package/contracts/pool/IBundleService.sol +33 -18
  403. package/contracts/pool/IPoolComponent.sol +21 -10
  404. package/contracts/pool/IPoolService.sol +53 -50
  405. package/contracts/pool/Pool.sol +150 -116
  406. package/contracts/pool/PoolService.sol +337 -160
  407. package/contracts/pool/PoolServiceManager.sol +4 -4
  408. package/contracts/product/ApplicationService.sol +72 -43
  409. package/contracts/product/ApplicationServiceManager.sol +4 -4
  410. package/contracts/product/BasicProduct.sol +13 -44
  411. package/contracts/product/BasicProductAuthorization.sol +3 -14
  412. package/contracts/product/ClaimService.sol +428 -136
  413. package/contracts/product/ClaimServiceManager.sol +4 -4
  414. package/contracts/product/IApplicationService.sol +6 -2
  415. package/contracts/product/IClaimService.sol +44 -7
  416. package/contracts/product/IPolicyService.sol +46 -34
  417. package/contracts/product/IPricingService.sol +10 -10
  418. package/contracts/product/IProductComponent.sol +27 -5
  419. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  420. package/contracts/product/PolicyService.sol +501 -258
  421. package/contracts/product/PolicyServiceManager.sol +4 -4
  422. package/contracts/product/PricingService.sol +66 -62
  423. package/contracts/product/PricingServiceManager.sol +4 -4
  424. package/contracts/product/Product.sol +160 -89
  425. package/contracts/product/RiskService.sol +145 -0
  426. package/contracts/product/RiskServiceManager.sol +39 -0
  427. package/contracts/registry/ChainNft.sol +72 -40
  428. package/contracts/registry/IRegistry.sol +60 -28
  429. package/contracts/registry/IRegistryService.sol +5 -12
  430. package/contracts/registry/IRelease.sol +26 -0
  431. package/contracts/registry/ITransferInterceptor.sol +1 -2
  432. package/contracts/registry/Registry.sol +357 -203
  433. package/contracts/registry/RegistryAdmin.sol +161 -182
  434. package/contracts/registry/RegistryService.sol +37 -48
  435. package/contracts/registry/RegistryServiceManager.sol +3 -3
  436. package/contracts/registry/ReleaseAdmin.sol +245 -0
  437. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  438. package/contracts/registry/ReleaseRegistry.sol +258 -234
  439. package/contracts/registry/ServiceAuthorizationV3.sol +94 -52
  440. package/contracts/registry/TokenRegistry.sol +6 -8
  441. package/contracts/shared/Component.sol +82 -121
  442. package/contracts/shared/ComponentService.sol +419 -349
  443. package/contracts/shared/ComponentServiceManager.sol +8 -5
  444. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  445. package/contracts/shared/ContractLib.sol +253 -0
  446. package/contracts/shared/IComponent.sol +8 -17
  447. package/contracts/shared/IComponentService.sol +43 -39
  448. package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
  449. package/contracts/shared/ILifecycle.sol +3 -1
  450. package/contracts/shared/INftOwnable.sol +2 -0
  451. package/contracts/shared/IPolicyHolder.sol +12 -22
  452. package/contracts/shared/IRegisterable.sol +23 -1
  453. package/contracts/shared/IService.sol +3 -5
  454. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  455. package/contracts/shared/InstanceLinkedComponent.sol +73 -48
  456. package/contracts/shared/KeyValueStore.sol +1 -1
  457. package/contracts/shared/Lifecycle.sol +15 -4
  458. package/contracts/shared/NftOwnable.sol +31 -11
  459. package/contracts/shared/PolicyHolder.sol +17 -57
  460. package/contracts/shared/Registerable.sol +55 -21
  461. package/contracts/shared/RegistryLinked.sol +9 -14
  462. package/contracts/shared/Service.sol +15 -32
  463. package/contracts/shared/TokenHandler.sol +281 -27
  464. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  465. package/contracts/staking/IStaking.sol +7 -9
  466. package/contracts/staking/IStakingService.sol +0 -3
  467. package/contracts/staking/StakeManagerLib.sol +19 -26
  468. package/contracts/staking/Staking.sol +71 -59
  469. package/contracts/staking/StakingManager.sol +8 -6
  470. package/contracts/staking/StakingReader.sol +13 -6
  471. package/contracts/staking/StakingService.sol +37 -40
  472. package/contracts/staking/StakingServiceManager.sol +6 -5
  473. package/contracts/staking/TargetManagerLib.sol +7 -3
  474. package/contracts/type/Amount.sol +27 -5
  475. package/contracts/type/Blocknumber.sol +7 -1
  476. package/contracts/type/ClaimId.sol +6 -1
  477. package/contracts/type/Key32.sol +2 -2
  478. package/contracts/type/Key32Set.sol +62 -0
  479. package/contracts/type/NftId.sol +7 -0
  480. package/contracts/type/ObjectType.sol +52 -20
  481. package/contracts/type/PayoutId.sol +10 -10
  482. package/contracts/type/Referral.sol +1 -0
  483. package/contracts/type/RiskId.sol +35 -4
  484. package/contracts/type/RoleId.sol +23 -15
  485. package/contracts/type/Seconds.sol +21 -1
  486. package/contracts/type/StateId.sol +15 -1
  487. package/contracts/type/Timestamp.sol +10 -5
  488. package/contracts/type/UFixed.sol +35 -122
  489. package/contracts/type/Version.sol +15 -5
  490. package/contracts/upgradeability/ProxyManager.sol +68 -34
  491. package/contracts/upgradeability/Versionable.sol +2 -2
  492. package/package.json +4 -3
  493. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  494. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  495. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  496. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  497. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  498. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  499. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  500. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  501. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  502. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  503. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  504. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  505. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  506. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  507. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  508. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  509. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  510. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  511. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  512. package/contracts/instance/module/IAccess.sol +0 -46
  513. package/contracts/product/ProductService.sol +0 -99
  514. package/contracts/product/ProductServiceManager.sol +0 -39
  515. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -2,44 +2,37 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
- import {Fee} from "../type/Fee.sol";
6
- import {NftId} from "../type/NftId.sol";
7
- import {PayoutId} from "../type/PayoutId.sol";
8
- import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {ClaimId} from "../type/ClaimId.sol";
9
6
  import {IInstance} from "../instance/IInstance.sol";
10
7
  import {InstanceReader} from "../instance/InstanceReader.sol";
11
8
  import {IPolicy} from "../instance/module/IPolicy.sol";
12
9
  import {IService} from "../shared/IService.sol";
13
- import {RoleId} from "../type/RoleId.sol";
14
- import {Seconds} from "../type/Seconds.sol";
15
- import {StateId} from "../type/StateId.sol";
10
+ import {NftId} from "../type/NftId.sol";
16
11
  import {UFixed} from "../type/UFixed.sol";
17
12
 
18
13
  interface IPoolService is IService {
19
14
 
20
- event LogPoolServiceMaxCapitalAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
21
- event LogPoolServiceBundleOwnerRoleSet(NftId poolNftId, RoleId bundleOwnerRole);
15
+ event LogPoolServiceMaxBalanceAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
16
+ event LogPoolServiceWalletFunded(NftId poolNftId, address poolOwner, Amount amount);
17
+ event LogPoolServiceWalletDefunded(NftId poolNftId, address poolOwner, Amount amount);
22
18
 
23
19
  event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
24
20
  event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
25
21
 
26
- error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
27
- error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
28
-
29
- /// @dev defines the required role for bundle owners for the calling pool
30
- /// default implementation returns PUBLIC ROLE
31
- function setBundleOwnerRole(RoleId bundleOwnerRole) external;
22
+ event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
23
+ event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
32
24
 
33
- /// @dev sets the max capital amount for the calling pool
34
- function setMaxCapitalAmount(Amount maxCapitalAmount) external;
25
+ event LogPoolServiceProcessFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount);
35
26
 
36
- /// @dev set pool sepecific fees
37
- function setFees(
38
- Fee memory poolFee,
39
- Fee memory stakingFee,
40
- Fee memory performanceFee
41
- ) external;
27
+ error ErrorPoolServicePoolNotExternallyManaged(NftId poolNftId);
28
+ error ErrorPoolServicePolicyPoolMismatch(NftId policyNftId, NftId productNftId, NftId expectedProductNftId);
29
+ error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
30
+ error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
31
+ error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
32
+ error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
42
33
 
34
+ /// @dev sets the max balance amount for the calling pool
35
+ function setMaxBalanceAmount(Amount maxBalanceAmount) external;
43
36
 
44
37
  /// @dev locks required collateral to cover the specified application (and turn it into a policy)
45
38
  /// - retention level == 1: the full collateral amount will be locked by the specified bundle
@@ -71,10 +64,10 @@ interface IPoolService is IService {
71
64
  ) external;
72
65
 
73
66
 
74
- /// @dev reduces the locked collateral in the bundle associated with the specified policy
67
+ /// @dev reduces the locked collateral in the bundle associated with the specified policy and updates pool/bundle counters
75
68
  /// every payout of a policy reduces the collateral by the payout amount
76
69
  /// may only be called by the claim service for unlocked pool components
77
- function reduceCollateral(
70
+ function processPayout(
78
71
  IInstance instance,
79
72
  address token,
80
73
  NftId policyNftId,
@@ -83,18 +76,16 @@ interface IPoolService is IService {
83
76
  ) external;
84
77
 
85
78
 
86
- /// @dev create a new bundle for the provided parameters
79
+ /// @dev increase stakes for bundle
87
80
  /// staking fees will be deducted by the pool service from the staking amount
88
81
  /// may only be called by registered and unlocked pool components
89
- function createBundle(
90
- address owner, // initial bundle owner
91
- Fee memory fee, // fees deducted from premium that go to bundle owner
92
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
93
- Seconds lifetime, // initial duration for which new policies are covered
94
- bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
95
- )
96
- external
97
- returns(NftId bundleNftId); // the nft id of the newly created bundle
82
+ function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
83
+
84
+
85
+ /// @dev decrease stakes for bundle
86
+ /// performance fees will be deducted by the pool service from the staking amount
87
+ /// may only be called by registered and unlocked pool components
88
+ function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
98
89
 
99
90
 
100
91
  /// @dev closes the specified bundle
@@ -105,22 +96,30 @@ interface IPoolService is IService {
105
96
  function closeBundle(NftId bundleNftId) external;
106
97
 
107
98
 
108
- /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
109
- function processSale(NftId bundleNftId, IPolicy.Premium memory premium) external;
99
+ /// @dev Informs product about available funds to process a confirmed claim.
100
+ /// The function triggers a callback to the product component when the product's property isProcessingFundedClaims is set.
101
+ function processFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount) external;
110
102
 
111
- /// @dev increase stakes for bundle
112
- /// staking fees will be deducted by the pool service from the staking amount
113
- /// may only be called by registered and unlocked pool components
114
- // function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
115
103
 
104
+ /// @dev Fund the pool wallet with the provided amount.
105
+ /// This function will collect the amount from the pool owner and transfers it to the pool wallet.
106
+ /// The function will not update balance amounts managed by the framework.
107
+ /// Only available for externally managed pools.
108
+ function fundPoolWallet(Amount amount) external;
116
109
 
117
- /// @dev decrease stakes for bundle
118
- /// performance fees will be deducted by the pool service from the staking amount
119
- /// may only be called by registered and unlocked pool components
120
- // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
121
110
 
111
+ /// @dev Defund the specified pool wallet with the provided amount.
112
+ /// This function will transfer the amount from the pool wallet to the pool owner.
113
+ /// The function will not update balance amounts managed by the framework.
114
+ /// Only available for externally managed pools.
115
+ function defundPoolWallet(Amount amount) external;
122
116
 
123
- /// @dev calulate required collateral for the provided parameters
117
+
118
+ /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
119
+ function processSale(NftId bundleNftId, IPolicy.PremiumInfo memory premium) external;
120
+
121
+
122
+ /// @dev Calulate required collateral for the provided parameters.
124
123
  function calculateRequiredCollateral(
125
124
  InstanceReader instanceReader,
126
125
  NftId productNftId,
@@ -129,12 +128,16 @@ interface IPoolService is IService {
129
128
  external
130
129
  view
131
130
  returns(
131
+ NftId poolNftId,
132
+ Amount totalCollateralAmount,
132
133
  Amount localCollateralAmount,
133
- Amount totalCollateralAmount
134
+ bool poolIsVerifyingApplications
134
135
  );
135
136
 
136
137
 
137
- /// @dev calulate required collateral for the provided parameters
138
+ /// @dev calulate required collateral for the provided parameters.
139
+ /// Collateralization is applied to sum insured.
140
+ /// Retention level defines the fraction of the collateral that is required locally.
138
141
  function calculateRequiredCollateral(
139
142
  UFixed collateralizationLevel,
140
143
  UFixed retentionLevel,
@@ -143,8 +146,8 @@ interface IPoolService is IService {
143
146
  external
144
147
  pure
145
148
  returns(
146
- Amount localCollateralAmount,
147
- Amount totalCollateralAmount
149
+ Amount totalCollateralAmount,
150
+ Amount localCollateralAmount
148
151
  );
149
152
 
150
153
  }
@@ -2,7 +2,8 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount, AmountLib} from "../type/Amount.sol";
5
- import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
5
+ import {BUNDLE, COMPONENT, POLICY, POOL} from "../type/ObjectType.sol";
6
+ import {ClaimId} from "../type/ClaimId.sol";
6
7
  import {IBundleService} from "./IBundleService.sol";
7
8
  import {IAuthorization} from "../authorization/IAuthorization.sol";
8
9
  import {IPoolComponent} from "./IPoolComponent.sol";
@@ -10,12 +11,13 @@ import {IPoolService} from "./IPoolService.sol";
10
11
  import {IComponents} from "../instance/module/IComponents.sol";
11
12
  import {IComponentService} from "../shared/IComponentService.sol";
12
13
  import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
13
- import {Fee, FeeLib} from "../type/Fee.sol";
14
- import {NftId, NftIdLib} from "../type/NftId.sol";
14
+ import {InstanceReader} from "../instance/InstanceReader.sol";
15
+ import {Fee} from "../type/Fee.sol";
16
+ import {NftId} from "../type/NftId.sol";
15
17
  import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
16
18
  import {Seconds} from "../type/Seconds.sol";
17
- import {TokenHandler} from "../shared/TokenHandler.sol";
18
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
+ import {Timestamp} from "../type/Timestamp.sol";
20
+ import {UFixed} from "../type/UFixed.sol";
19
21
 
20
22
  abstract contract Pool is
21
23
  InstanceLinkedComponent,
@@ -25,6 +27,7 @@ abstract contract Pool is
25
27
  bytes32 public constant POOL_STORAGE_LOCATION_V1 = 0x25e3e51823fbfffb988e0a2744bb93722d9f3e906c07cc0a9e77884c46c58300;
26
28
 
27
29
  struct PoolStorage {
30
+ IComponents.PoolInfo _poolInfo;
28
31
  IComponentService _componentService;
29
32
  IPoolService _poolService;
30
33
  IBundleService _bundleService;
@@ -39,23 +42,29 @@ abstract contract Pool is
39
42
  }
40
43
 
41
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
+
42
51
  /// @dev see {IPoolComponent.verifyApplication}
43
52
  function verifyApplication(
44
53
  NftId applicationNftId,
45
- bytes memory applicationData,
46
54
  NftId bundleNftId,
47
- bytes memory bundleFilter,
48
55
  Amount collateralizationAmount
49
56
  )
50
57
  public
51
58
  virtual
52
59
  restricted()
60
+ onlyNftOfType(applicationNftId, POLICY())
53
61
  {
62
+ InstanceReader reader = _getInstanceReader();
54
63
  if(!applicationMatchesBundle(
55
64
  applicationNftId,
56
- applicationData,
65
+ reader.getPolicyInfo(applicationNftId).applicationData,
57
66
  bundleNftId,
58
- bundleFilter,
67
+ reader.getBundleInfo(bundleNftId).filter,
59
68
  collateralizationAmount)
60
69
  )
61
70
  {
@@ -66,9 +75,25 @@ abstract contract Pool is
66
75
  }
67
76
 
68
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
+
69
93
  /// @dev see {IPoolComponent.applicationMatchesBundle}
70
- /// Override this function to implement any custom application verification
71
- /// Default implementation always returns true
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.
72
97
  function applicationMatchesBundle(
73
98
  NftId applicationNftId,
74
99
  bytes memory applicationData,
@@ -79,54 +104,33 @@ abstract contract Pool is
79
104
  public
80
105
  virtual
81
106
  view
107
+ onlyNftOfType(applicationNftId, POLICY())
108
+ onlyNftOfType(bundleNftId, BUNDLE())
82
109
  returns (bool isMatching)
83
110
  {
84
111
  return true;
85
112
  }
86
113
 
87
114
 
88
- function register()
89
- external
90
- virtual
91
- onlyOwner()
92
- {
93
- _getPoolStorage()._componentService.registerPool();
94
- _approveTokenHandler(type(uint256).max);
95
- }
96
-
97
-
98
115
  function getInitialPoolInfo()
99
116
  public
100
117
  virtual
101
118
  view
102
119
  returns (IComponents.PoolInfo memory poolInfo)
103
120
  {
104
- return IComponents.PoolInfo(
105
- NftIdLib.zero(), // will be set when GIF registers the related product
106
- PUBLIC_ROLE(), // bundleOwnerRole
107
- AmountLib.max(), // maxCapitalAmount,
108
- isNftInterceptor(), // isInterceptingBundleTransfers
109
- false, // isExternallyManaged,
110
- false, // isVerifyingApplications,
111
- UFixedLib.toUFixed(1), // collateralizationLevel,
112
- UFixedLib.toUFixed(1), // retentionLevel,
113
- FeeLib.zero(), // initialPoolFee,
114
- FeeLib.zero(), // initialStakingFee,
115
- FeeLib.zero() // initialPerformanceFee,
116
- );
121
+ return _getPoolStorage()._poolInfo;
117
122
  }
118
123
 
119
124
  // Internals
120
125
 
121
126
  function _initializePool(
122
127
  address registry,
123
- NftId instanceNftId,
128
+ NftId productNftId,
124
129
  string memory name,
125
130
  address token,
131
+ IComponents.PoolInfo memory poolInfo,
126
132
  IAuthorization authorization,
127
- bool isInterceptingNftTransfers,
128
133
  address initialOwner,
129
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
130
134
  bytes memory componentData // component specifidc data
131
135
  )
132
136
  internal
@@ -135,24 +139,116 @@ abstract contract Pool is
135
139
  {
136
140
  _initializeInstanceLinkedComponent(
137
141
  registry,
138
- instanceNftId,
142
+ productNftId,
139
143
  name,
140
144
  token,
141
145
  POOL(),
142
146
  authorization,
143
- isInterceptingNftTransfers,
147
+ poolInfo.isInterceptingBundleTransfers,
144
148
  initialOwner,
145
- registryData,
146
149
  componentData);
147
150
 
148
151
  PoolStorage storage $ = _getPoolStorage();
152
+
153
+ $._poolInfo = poolInfo;
149
154
  $._poolService = IPoolService(_getServiceAddress(POOL()));
150
155
  $._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
151
156
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
152
157
 
153
- registerInterface(type(IPoolComponent).interfaceId);
158
+ _registerInterface(type(IPoolComponent).interfaceId);
159
+ }
160
+
161
+
162
+ /// @dev Update pool fees to the specified values.
163
+ /// Pool fee: are deducted from the premium amount and goes to the pool owner.
164
+ /// Staking fee: are deducted from the staked tokens by a bundle owner and goes to the pool owner.
165
+ /// Performance fee: when a bundle is closed a bundle specific profit is calculated.
166
+ /// The performance fee is deducted from this profit and goes to the pool owner.
167
+ function _setPoolFees(
168
+ Fee memory poolFee,
169
+ Fee memory stakingFee,
170
+ Fee memory performanceFee
171
+ )
172
+ internal
173
+ virtual
174
+ {
175
+ _getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
176
+ }
177
+
178
+
179
+ /// @dev Sets the maximum balance amound held by this pool.
180
+ /// Function may only be called by pool owner.
181
+ function _setMaxBalanceAmount(Amount maxBalanceAmount)
182
+ internal
183
+ virtual
184
+ {
185
+ _getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
186
+ }
187
+
188
+
189
+ /// @dev Fund the pool wallet with the specified amount.
190
+ /// Function is only available for externally managed pools.
191
+ function _fundPoolWallet(Amount amount)
192
+ internal
193
+ virtual
194
+ {
195
+ _getPoolStorage()._poolService.fundPoolWallet(amount);
196
+ }
197
+
198
+
199
+ /// @dev Withdraw the specified amount from the pool wallet.
200
+ /// Function is only available for externally managed pools.
201
+ function _defundPoolWallet(Amount amount)
202
+ internal
203
+ virtual
204
+ {
205
+ _getPoolStorage()._poolService.defundPoolWallet(amount);
206
+ }
207
+
208
+
209
+ /// @dev Creates a new empty bundle using the provided parameter values.
210
+ function _createBundle(
211
+ address bundleOwner,
212
+ Fee memory fee,
213
+ Seconds lifetime,
214
+ bytes memory filter
215
+ )
216
+ internal
217
+ returns(NftId bundleNftId)
218
+ {
219
+ bundleNftId = _getPoolStorage()._bundleService.create(
220
+ bundleOwner,
221
+ fee,
222
+ lifetime,
223
+ filter);
224
+
225
+ // TODO add logging
226
+ }
227
+
228
+
229
+ /// @dev Sets the fee for the specified bundle.
230
+ /// The fee is added on top of the poolFee and deducted from the premium amounts
231
+ /// Via these fees individual bundler owner may earn income per policy in the context of peer to peer pools.
232
+ function _setBundleFee(
233
+ NftId bundleNftId,
234
+ Fee memory fee
235
+ )
236
+ internal
237
+ virtual
238
+ {
239
+ _getPoolStorage()._bundleService.setFee(bundleNftId, fee);
240
+ }
241
+
242
+
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);
154
249
  }
155
250
 
251
+
156
252
  /// @dev increases the staked tokens by the specified amount
157
253
  /// bundle MUST be in active or locked state
158
254
  function _stake(
@@ -161,8 +257,9 @@ abstract contract Pool is
161
257
  )
162
258
  internal
163
259
  virtual
260
+ returns(Amount)
164
261
  {
165
- // TODO add implementation
262
+ return _getPoolStorage()._poolService.stake(bundleNftId, amount);
166
263
  }
167
264
 
168
265
 
@@ -174,8 +271,9 @@ abstract contract Pool is
174
271
  )
175
272
  internal
176
273
  virtual
274
+ returns(Amount netAmount)
177
275
  {
178
- // TODO add implementation
276
+ return _getPoolStorage()._poolService.unstake(bundleNftId, amount);
179
277
  }
180
278
 
181
279
 
@@ -187,8 +285,9 @@ abstract contract Pool is
187
285
  )
188
286
  internal
189
287
  virtual
288
+ returns (Timestamp extendedExpiredAt)
190
289
  {
191
- // TODO add implementation
290
+ return _getPoolStorage()._bundleService.extend(bundleNftId, lifetimeExtension);
192
291
  }
193
292
 
194
293
 
@@ -218,7 +317,7 @@ abstract contract Pool is
218
317
  /// To close a bundle all all linked policies MUST be in closed state as well.
219
318
  /// Closing a bundle finalizes the bundle bookkeeping including overall profit calculation.
220
319
  /// Once a bundle is closed this action cannot be reversed.
221
- function _close(NftId bundleNftId)
320
+ function _closeBundle(NftId bundleNftId)
222
321
  internal
223
322
  virtual
224
323
  {
@@ -226,80 +325,15 @@ abstract contract Pool is
226
325
  }
227
326
 
228
327
 
229
- /// @dev Sets the fee for the specified bundle.
230
- /// The fee is added on top of the poolFee and deducted from the premium amounts
231
- /// Via these fees individual bundler owner may earn income per policy in the context of peer to peer pools.
232
- function _setBundleFee(
233
- NftId bundleNftId,
234
- Fee memory fee
235
- )
236
- internal
237
- virtual
238
- {
239
- _getPoolStorage()._bundleService.setFee(bundleNftId, fee);
240
- }
241
-
242
-
243
- /// @dev Sets the maximum overall capital amound held by this pool.
244
- /// Function may only be called by pool owner.
245
- function _setMaxCapitalAmount(Amount maxCapitalAmount)
246
- internal
247
- virtual
248
- {
249
- _getPoolStorage()._poolService.setMaxCapitalAmount(maxCapitalAmount);
250
- }
251
-
252
- /// @dev Sets the required role to create/own bundles.
253
- /// May only be called once after setting up a pool.
254
- /// May only be called by pool owner.
255
- function _setBundleOwnerRole(RoleId bundleOwnerRole)
256
- internal
257
- virtual
258
- {
259
- _getPoolStorage()._poolService.setBundleOwnerRole(bundleOwnerRole);
260
- }
261
-
262
-
263
- /// @dev Update pool fees to the specified values.
264
- /// Pool fee: are deducted from the premium amount and goes to the pool owner.
265
- /// Staking fee: are deducted from the staked tokens by a bundle owner and goes to the pool owner.
266
- /// Performance fee: when a bundle is closed a bundle specific profit is calculated.
267
- /// The performance fee is deducted from this profit and goes to the pool owner.
268
- function _setPoolFees(
269
- Fee memory poolFee,
270
- Fee memory stakingFee,
271
- Fee memory performanceFee
328
+ function _processFundedClaim(
329
+ NftId policyNftId,
330
+ ClaimId claimId,
331
+ Amount availableAmount
272
332
  )
273
333
  internal
274
- virtual
275
334
  {
276
- _getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
277
- }
278
-
279
- /// @dev Creates a new bundle using the provided parameter values.
280
- function _createBundle(
281
- address bundleOwner,
282
- Fee memory fee,
283
- Amount amount,
284
- Seconds lifetime,
285
- bytes memory filter
286
- )
287
- internal
288
- returns(NftId bundleNftId)
289
- {
290
- bundleNftId = _getPoolStorage()._poolService.createBundle(
291
- bundleOwner,
292
- fee,
293
- amount,
294
- lifetime,
295
- filter);
296
-
297
- // TODO add logging
298
- }
299
-
300
- // TODO remove function once this is no longer used to produce contract locations on the fly ...
301
- function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
302
- return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
335
+ _getPoolStorage()._poolService.processFundedClaim(
336
+ policyNftId, claimId, availableAmount);
303
337
  }
304
338
 
305
339