@etherisc/gif-next 0.0.2-b3a8633-027 → 0.0.2-b3e9a44-364

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 (449) hide show
  1. package/README.md +19 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +32 -51
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +0 -19
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +101 -248
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +59 -222
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +244 -217
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +109 -101
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +59 -37
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +136 -31
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1507 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1978 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1427 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1187 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1561 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1996 -0
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +16 -0
  55. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +16 -0
  57. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  58. package/artifacts/contracts/instance/Instance.sol/Instance.json +26 -99
  59. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +96 -99
  61. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +437 -129
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +55 -146
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +77 -81
  69. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +244 -228
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  73. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +75 -235
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
  92. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +46 -37
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +16 -0
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +43 -219
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +53 -144
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +76 -80
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +95 -280
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +463 -150
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +170 -86
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +245 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +88 -94
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +376 -171
  117. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/Pool.sol/Pool.json +85 -276
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +525 -350
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +114 -82
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +52 -162
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +73 -89
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +63 -248
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +279 -181
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +120 -100
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +21 -0
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +163 -6
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +310 -118
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +59 -43
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +63 -63
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  146. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +18 -2
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +421 -320
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +120 -100
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.json +136 -259
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +97 -117
  155. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  156. package/artifacts/contracts/product/Product.sol/Product.json +63 -248
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +604 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +698 -0
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +22 -3
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +297 -19
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +16 -0
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  168. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/Registry.sol/Registry.json +401 -104
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +121 -134
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +39 -313
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +68 -72
  176. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  178. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +45 -16
  180. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  182. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  184. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  185. package/artifacts/contracts/shared/Component.sol/Component.json +16 -211
  186. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +263 -161
  188. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +121 -95
  190. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +21 -112
  192. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  194. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +16 -26
  196. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +169 -0
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +35 -37
  200. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  201. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  202. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  204. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  206. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +16 -0
  208. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IService.sol/IService.json +16 -0
  211. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  212. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  214. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +35 -222
  215. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  217. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  218. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  219. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  221. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  222. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  224. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -97
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  226. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  227. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  228. package/artifacts/contracts/shared/Service.sol/Service.json +21 -112
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  230. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  231. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  232. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  233. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  234. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +43 -27
  235. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  236. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +16 -21
  237. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  239. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  240. package/artifacts/contracts/staking/Staking.sol/Staking.json +101 -262
  241. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  243. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -88
  245. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  247. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +47 -159
  249. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +72 -76
  251. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +89 -84
  253. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  254. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  255. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  256. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  258. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  260. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  262. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  264. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  266. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  268. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  270. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  271. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  272. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  274. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  276. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  278. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  280. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  282. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  284. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  286. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  290. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
  297. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  303. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  304. package/contracts/authorization/AccessAdmin.sol +25 -23
  305. package/contracts/authorization/Authorization.sol +5 -2
  306. package/contracts/authorization/IAccessAdmin.sol +0 -1
  307. package/contracts/distribution/BasicDistribution.sol +6 -15
  308. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  309. package/contracts/distribution/Distribution.sol +25 -12
  310. package/contracts/distribution/DistributionService.sol +114 -54
  311. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  312. package/contracts/distribution/IDistributionComponent.sol +8 -4
  313. package/contracts/distribution/IDistributionService.sol +18 -2
  314. package/contracts/examples/fire/DamageLevel.sol +59 -0
  315. package/contracts/examples/fire/FirePool.sol +75 -0
  316. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  317. package/contracts/examples/fire/FireProduct.sol +411 -0
  318. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  319. package/contracts/examples/fire/FireUSD.sol +26 -0
  320. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  321. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  322. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  323. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  324. package/contracts/instance/IInstance.sol +7 -30
  325. package/contracts/instance/Instance.sol +10 -35
  326. package/contracts/instance/InstanceAdmin.sol +29 -7
  327. package/contracts/instance/InstanceAuthorizationV3.sol +5 -3
  328. package/contracts/instance/InstanceReader.sol +115 -25
  329. package/contracts/instance/InstanceService.sol +63 -41
  330. package/contracts/instance/InstanceServiceManager.sol +6 -7
  331. package/contracts/instance/InstanceStore.sol +12 -1
  332. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  333. package/contracts/instance/module/IBundle.sol +1 -1
  334. package/contracts/instance/module/IComponents.sol +4 -8
  335. package/contracts/instance/module/IDistribution.sol +0 -1
  336. package/contracts/instance/module/IPolicy.sol +24 -24
  337. package/contracts/mock/Dip.sol +1 -1
  338. package/contracts/oracle/IOracleComponent.sol +2 -1
  339. package/contracts/oracle/Oracle.sol +17 -7
  340. package/contracts/oracle/OracleService.sol +41 -33
  341. package/contracts/oracle/OracleServiceManager.sol +6 -6
  342. package/contracts/pool/BasicPool.sol +19 -18
  343. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  344. package/contracts/pool/BundleService.sol +208 -31
  345. package/contracts/pool/BundleServiceManager.sol +6 -6
  346. package/contracts/pool/IBundleService.sol +42 -5
  347. package/contracts/pool/IPoolComponent.sol +24 -8
  348. package/contracts/pool/IPoolService.sol +57 -36
  349. package/contracts/pool/Pool.sol +81 -35
  350. package/contracts/pool/PoolService.sol +231 -104
  351. package/contracts/pool/PoolServiceManager.sol +4 -4
  352. package/contracts/product/ApplicationService.sol +50 -29
  353. package/contracts/product/ApplicationServiceManager.sol +4 -4
  354. package/contracts/product/BasicProduct.sol +3 -32
  355. package/contracts/product/BasicProductAuthorization.sol +3 -0
  356. package/contracts/product/ClaimService.sol +251 -86
  357. package/contracts/product/ClaimServiceManager.sol +4 -4
  358. package/contracts/product/IApplicationService.sol +1 -0
  359. package/contracts/product/IClaimService.sol +31 -7
  360. package/contracts/product/IPolicyService.sol +34 -32
  361. package/contracts/product/IPricingService.sol +7 -7
  362. package/contracts/product/IProductComponent.sol +18 -4
  363. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  364. package/contracts/product/PolicyService.sol +404 -193
  365. package/contracts/product/PolicyServiceManager.sol +4 -4
  366. package/contracts/product/PricingService.sol +47 -47
  367. package/contracts/product/PricingServiceManager.sol +3 -3
  368. package/contracts/product/Product.sol +93 -51
  369. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  370. package/contracts/product/RiskServiceManager.sol +39 -0
  371. package/contracts/registry/ChainNft.sol +51 -19
  372. package/contracts/registry/IRegistry.sol +53 -12
  373. package/contracts/registry/IRegistryService.sol +0 -9
  374. package/contracts/registry/Registry.sol +320 -172
  375. package/contracts/registry/RegistryAdmin.sol +49 -32
  376. package/contracts/registry/RegistryService.sol +55 -48
  377. package/contracts/registry/RegistryServiceManager.sol +2 -2
  378. package/contracts/registry/ReleaseRegistry.sol +25 -67
  379. package/contracts/registry/ServiceAuthorizationV3.sol +6 -8
  380. package/contracts/shared/Component.sol +24 -44
  381. package/contracts/shared/ComponentService.sol +88 -28
  382. package/contracts/shared/ComponentServiceManager.sol +8 -5
  383. package/contracts/shared/ComponentVerifyingService.sol +2 -3
  384. package/contracts/shared/ContractLib.sol +38 -0
  385. package/contracts/shared/IComponent.sol +4 -4
  386. package/contracts/shared/IComponentService.sol +15 -9
  387. package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
  388. package/contracts/shared/INftOwnable.sol +2 -0
  389. package/contracts/shared/IPolicyHolder.sol +12 -22
  390. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  391. package/contracts/shared/InstanceLinkedComponent.sol +26 -6
  392. package/contracts/shared/NftOwnable.sol +23 -7
  393. package/contracts/shared/PolicyHolder.sol +17 -57
  394. package/contracts/shared/Registerable.sol +4 -4
  395. package/contracts/shared/RegistryLinked.sol +3 -2
  396. package/contracts/shared/Service.sol +16 -11
  397. package/contracts/shared/TokenHandler.sol +100 -19
  398. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  399. package/contracts/staking/IStaking.sol +2 -1
  400. package/contracts/staking/IStakingService.sol +0 -3
  401. package/contracts/staking/StakeManagerLib.sol +18 -25
  402. package/contracts/staking/Staking.sol +16 -28
  403. package/contracts/staking/StakingManager.sol +8 -6
  404. package/contracts/staking/StakingReader.sol +12 -5
  405. package/contracts/staking/StakingService.sol +11 -29
  406. package/contracts/staking/StakingServiceManager.sol +2 -2
  407. package/contracts/staking/TargetManagerLib.sol +7 -3
  408. package/contracts/type/Amount.sol +27 -5
  409. package/contracts/type/Blocknumber.sol +7 -1
  410. package/contracts/type/ClaimId.sol +6 -1
  411. package/contracts/type/NftId.sol +1 -0
  412. package/contracts/type/ObjectType.sol +16 -11
  413. package/contracts/type/PayoutId.sol +10 -10
  414. package/contracts/type/Referral.sol +1 -0
  415. package/contracts/type/RiskId.sol +15 -1
  416. package/contracts/type/Seconds.sol +21 -1
  417. package/contracts/type/StateId.sol +1 -0
  418. package/contracts/type/Timestamp.sol +11 -1
  419. package/contracts/type/UFixed.sol +33 -10
  420. package/contracts/upgradeability/ProxyManager.sol +67 -34
  421. package/contracts/upgradeability/Versionable.sol +2 -2
  422. package/package.json +2 -1
  423. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  424. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  425. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  426. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  427. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  428. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.dbg.json +0 -4
  429. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.json +0 -1503
  430. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.dbg.json +0 -4
  431. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.json +0 -1881
  432. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.dbg.json +0 -4
  433. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.json +0 -974
  434. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  435. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  436. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  437. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  438. package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.dbg.json +0 -4
  439. package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.json +0 -34
  440. package/artifacts/contracts/shared/MainnetId.sol/MainnetId.dbg.json +0 -4
  441. package/artifacts/contracts/shared/MainnetId.sol/MainnetId.json +0 -24
  442. package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.dbg.json +0 -4
  443. package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.json +0 -34
  444. package/contracts/product/ProductServiceManager.sol +0 -39
  445. package/contracts/registry/GlobalRegistry.sol +0 -95
  446. package/contracts/registry/GlobalRegistryAdmin.sol +0 -38
  447. package/contracts/registry/IGlobalRegistry.sol +0 -17
  448. package/contracts/shared/InitializableCustom.sol +0 -177
  449. package/contracts/shared/MainnetId.sol +0 -29
@@ -1,27 +1,29 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IBundle} from "../instance/module/IBundle.sol";
4
5
  import {IBundleService} from "./IBundleService.sol";
5
6
  import {IComponents} from "../instance/module/IComponents.sol";
6
7
  import {IComponentService} from "../shared/IComponentService.sol";
7
8
  import {IInstance} from "../instance/IInstance.sol";
8
9
  import {IInstanceService} from "../instance/IInstanceService.sol";
9
10
  import {IPolicy} from "../instance/module/IPolicy.sol";
11
+ import {IProductComponent} from "../product/IProductComponent.sol";
10
12
  import {IPoolService} from "./IPoolService.sol";
11
13
  import {IRegistry} from "../registry/IRegistry.sol";
12
14
  import {IRegistryService} from "../registry/IRegistryService.sol";
13
15
  import {IStaking} from "../staking/IStaking.sol";
14
16
 
15
17
  import {Amount, AmountLib} from "../type/Amount.sol";
18
+ import {ClaimId} from "../type/ClaimId.sol";
16
19
  import {Fee, FeeLib} from "../type/Fee.sol";
17
- import {NftId, NftIdLib} from "../type/NftId.sol";
20
+ import {NftId} from "../type/NftId.sol";
18
21
  import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
19
22
  import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
20
23
  import {Fee, FeeLib} from "../type/Fee.sol";
21
24
  import {KEEP_STATE} from "../type/StateId.sol";
22
25
  import {Seconds} from "../type/Seconds.sol";
23
- import {TokenHandler} from "../shared/TokenHandler.sol";
24
- import {UFixed} from "../type/UFixed.sol";
26
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
25
27
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
26
28
  import {InstanceReader} from "../instance/InstanceReader.sol";
27
29
  import {InstanceStore} from "../instance/InstanceStore.sol";
@@ -32,9 +34,6 @@ contract PoolService is
32
34
  ComponentVerifyingService,
33
35
  IPoolService
34
36
  {
35
- using NftIdLib for NftId;
36
- using AmountLib for Amount;
37
-
38
37
  IBundleService internal _bundleService;
39
38
  IComponentService internal _componentService;
40
39
  IInstanceService private _instanceService;
@@ -47,16 +46,15 @@ contract PoolService is
47
46
  bytes memory data
48
47
  )
49
48
  internal
50
- initializer
51
49
  virtual override
50
+ initializer()
52
51
  {
53
52
  (
54
- address registryAddress,,
55
- //address managerAddress
53
+ address registryAddress,
56
54
  address authority
57
- ) = abi.decode(data, (address, address, address));
55
+ ) = abi.decode(data, (address, address));
58
56
 
59
- initializeService(registryAddress, authority, owner);
57
+ _initializeService(registryAddress, authority, owner);
60
58
 
61
59
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
62
60
  _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
@@ -65,29 +63,27 @@ contract PoolService is
65
63
 
66
64
  _staking = IStaking(getRegistry().getStakingAddress());
67
65
 
68
- registerInterface(type(IPoolService).interfaceId);
66
+ _registerInterface(type(IPoolService).interfaceId);
69
67
  }
70
68
 
71
69
 
72
- function setMaxCapitalAmount(Amount maxCapitalAmount)
70
+ /// @inheritdoc IPoolService
71
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
73
72
  external
74
73
  virtual
75
74
  {
76
- /*
77
75
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
78
76
  InstanceReader instanceReader = instance.getInstanceReader();
77
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
79
78
 
80
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
81
- IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
82
- Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
83
-
84
- poolInfo.maxCapitalAmount = maxCapitalAmount;
79
+ Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
80
+ poolInfo.maxBalanceAmount = maxBalanceAmount;
85
81
  instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
86
82
 
87
- emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
88
- */
83
+ emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
89
84
  }
90
85
 
86
+
91
87
  function setBundleOwnerRole(RoleId bundleOwnerRole)
92
88
  external
93
89
  virtual
@@ -110,30 +106,10 @@ contract PoolService is
110
106
  }
111
107
 
112
108
 
113
- function setFees(
114
- Fee memory poolFee,
115
- Fee memory stakingFee,
116
- Fee memory performanceFee
117
- )
118
- external
119
- virtual
120
- {
121
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
122
-
123
- IComponents.PoolInfo memory poolInfo = instance.getInstanceReader().getPoolInfo(poolNftId);
124
- poolInfo.poolFee = poolFee;
125
- poolInfo.stakingFee = stakingFee;
126
- poolInfo.performanceFee = performanceFee;
127
-
128
- instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
129
-
130
- // TODO add logging
131
- }
132
-
109
+ /// @inheritdoc IPoolService
133
110
  function createBundle(
134
111
  address bundleOwner, // initial bundle owner
135
112
  Fee memory fee, // fees deducted from premium that go to bundle owner
136
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
137
113
  Seconds lifetime, // initial duration for which new policies are covered
138
114
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
139
115
  )
@@ -142,71 +118,213 @@ contract PoolService is
142
118
  returns(NftId bundleNftId)
143
119
  {
144
120
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
145
- InstanceReader instanceReader = instance.getInstanceReader();
146
-
147
- (
148
- Amount stakingFeeAmount,
149
- Amount stakingNetAmount
150
- ) = FeeLib.calculateFee(
151
- _getStakingFee(instanceReader, poolNftId),
152
- stakingAmount);
153
121
 
122
+ // create the empty bundle
154
123
  bundleNftId = _bundleService.create(
155
124
  instance,
156
125
  poolNftId,
157
126
  bundleOwner,
158
127
  fee,
159
- stakingNetAmount,
128
+ AmountLib.zero(),
160
129
  lifetime,
161
130
  filter);
162
131
 
163
- // pool book keeping
164
- _componentService.increasePoolBalance(
165
- instance.getInstanceStore(),
166
- poolNftId,
167
- stakingAmount,
168
- stakingFeeAmount);
169
-
170
- // pool bookkeeping and collect tokens from bundle owner
171
- _collectStakingAmount(
172
- instanceReader,
173
- poolNftId,
174
- bundleOwner,
175
- stakingAmount);
176
-
177
132
  emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
178
133
  }
179
134
 
135
+
180
136
  function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
181
137
  internal
182
138
  virtual
183
139
  view
184
140
  returns (Fee memory stakingFee)
185
141
  {
186
- NftId productNftId = instanceReader.getPoolInfo(poolNftId).productNftId;
187
- return instanceReader.getPoolInfo(productNftId).stakingFee;
142
+ NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
143
+ return instanceReader.getProductInfo(productNftId).stakingFee;
188
144
  }
189
145
 
146
+
190
147
  function closeBundle(NftId bundleNftId)
191
148
  external
192
149
  virtual
193
150
  {
194
151
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
195
152
 
196
- // TODO book keeping for pool collateral released outside of retention level
153
+ // TODO get performance fee for pool (#477)
197
154
 
198
155
  // releasing collateral in bundle
199
- _bundleService.close(instance, bundleNftId);
200
-
201
- // TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
156
+ (Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
202
157
 
158
+ _componentService.decreasePoolBalance(
159
+ instance.getInstanceStore(),
160
+ poolNftId,
161
+ unstakedAmount + feeAmount,
162
+ AmountLib.zero());
163
+
203
164
  emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
165
+
166
+ if ((unstakedAmount + feeAmount).gtz()){
167
+ IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
168
+ poolComponentInfo.tokenHandler.distributeTokens(
169
+ poolComponentInfo.wallet,
170
+ getRegistry().ownerOf(bundleNftId),
171
+ unstakedAmount + feeAmount);
172
+ }
173
+ }
174
+
175
+
176
+ /// @inheritdoc IPoolService
177
+ function processFundedClaim(
178
+ NftId policyNftId,
179
+ ClaimId claimId,
180
+ Amount availableAmount
181
+ )
182
+ external
183
+ virtual
184
+ {
185
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
186
+ InstanceReader instanceReader = instance.getInstanceReader();
187
+ NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
188
+
189
+ // check policy matches with calling pool
190
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
191
+ if(policyInfo.productNftId != productNftId) {
192
+ revert ErrorPoolServicePolicyPoolMismatch(
193
+ policyNftId,
194
+ policyInfo.productNftId,
195
+ productNftId);
196
+ }
197
+
198
+ emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
199
+
200
+ // callback to product component if applicable
201
+ if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
202
+ address productAddress = getRegistry().getObjectAddress(productNftId);
203
+ IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
204
+ }
205
+ }
206
+
207
+
208
+ /// @inheritdoc IPoolService
209
+ function stake(NftId bundleNftId, Amount amount)
210
+ external
211
+ virtual
212
+ // TODO: restricted() (once #462 is done)
213
+ returns(Amount netAmount)
214
+ {
215
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
216
+ InstanceReader instanceReader = instance.getInstanceReader();
217
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
218
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
219
+
220
+ if (bundleInfo.poolNftId != poolNftId) {
221
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
222
+ }
223
+
224
+ {
225
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
226
+ if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
227
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
228
+ }
229
+ }
230
+
231
+
232
+ // calculate fees
233
+ Amount feeAmount;
234
+ (
235
+ feeAmount,
236
+ netAmount
237
+ ) = FeeLib.calculateFee(
238
+ _getStakingFee(instanceReader, poolNftId),
239
+ amount);
240
+
241
+ // do all the bookkeeping
242
+ _componentService.increasePoolBalance(
243
+ instance.getInstanceStore(),
244
+ poolNftId,
245
+ netAmount,
246
+ feeAmount);
247
+
248
+ _bundleService.stake(instance, bundleNftId, netAmount);
249
+
250
+ // collect tokens from bundle owner
251
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
252
+ emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
253
+
254
+ // TODO only collect staking token when pool is not externally managed
255
+ _collectStakingAmount(
256
+ instanceReader,
257
+ poolNftId,
258
+ bundleOwner,
259
+ amount);
260
+ }
261
+
262
+ /// @inheritdoc IPoolService
263
+ function unstake(NftId bundleNftId, Amount amount)
264
+ external
265
+ virtual
266
+ // TODO: restricted() (once #462 is done)
267
+ returns(Amount netAmount)
268
+ {
269
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
270
+ InstanceReader instanceReader = instance.getInstanceReader();
271
+ InstanceStore instanceStore = instance.getInstanceStore();
272
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
273
+
274
+ if (bundleInfo.poolNftId != poolNftId) {
275
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
276
+ }
277
+
278
+ // call bundle service for bookkeeping and additional checks
279
+ Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
280
+
281
+ // Important: from now on work only with unstakedAmount as it is the only reliable amount.
282
+ // if amount was max, this was set to the available amount
283
+
284
+ // TODO: handle performance fees (issue #477)
285
+
286
+ // update pool bookkeeping - performance fees stay in the pool, but as fees
287
+ _componentService.decreasePoolBalance(
288
+ instanceStore,
289
+ poolNftId,
290
+ unstakedAmount,
291
+ AmountLib.zero());
292
+
293
+ IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
294
+ address poolWallet = poolComponentInfo.wallet;
295
+ // transfer amount to bundle owner
296
+ address owner = getRegistry().ownerOf(bundleNftId);
297
+ emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
298
+ poolComponentInfo.tokenHandler.distributeTokens(
299
+ poolWallet,
300
+ owner,
301
+ unstakedAmount);
302
+ return unstakedAmount;
204
303
  }
205
304
 
206
305
 
306
+ function fundPoolWallet(NftId poolNftId, Amount amount)
307
+ external
308
+ virtual
309
+ restricted()
310
+ {
311
+ // TODO check that poolNftId is externally managed
312
+ // TODO implement
313
+ }
314
+
315
+
316
+ function defundPoolWallet(NftId poolNftId, Amount amount)
317
+ external
318
+ virtual
319
+ restricted()
320
+ {
321
+ // TODO check that poolNftId is externally managed
322
+ // TODO implement
323
+ }
324
+
207
325
  function processSale(
208
326
  NftId bundleNftId,
209
- IPolicy.Premium memory premium
327
+ IPolicy.PremiumInfo memory premium
210
328
  )
211
329
  external
212
330
  virtual
@@ -218,9 +336,9 @@ contract PoolService is
218
336
  IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
219
337
  IInstance instance = IInstance(instanceObjectInfo.objectAddress);
220
338
 
221
- Amount poolFeeAmount = AmountLib.toAmount(premium.poolFeeFixAmount + premium.poolFeeVarAmount);
222
- Amount bundleFeeAmount = AmountLib.toAmount(premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
223
- Amount bundleNetAmount = AmountLib.toAmount(premium.netPremiumAmount);
339
+ Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
340
+ Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
341
+ Amount bundleNetAmount = premium.netPremiumAmount;
224
342
 
225
343
  InstanceStore instanceStore = instance.getInstanceStore();
226
344
  _componentService.increasePoolBalance(
@@ -249,13 +367,13 @@ contract PoolService is
249
367
  virtual
250
368
  restricted()
251
369
  returns (
252
- Amount localCollateralAmount,
253
- Amount totalCollateralAmount
370
+ Amount totalCollateralAmount,
371
+ Amount localCollateralAmount
254
372
  )
255
373
  {
256
374
  (
257
- localCollateralAmount,
258
- totalCollateralAmount
375
+ totalCollateralAmount,
376
+ localCollateralAmount
259
377
  ) = calculateRequiredCollateral(
260
378
  instance.getInstanceReader(),
261
379
  productNftId,
@@ -281,8 +399,7 @@ contract PoolService is
281
399
  }
282
400
  }
283
401
 
284
-
285
- function reduceCollateral(
402
+ function processPayout(
286
403
  IInstance instance,
287
404
  address token,
288
405
  NftId policyNftId,
@@ -293,6 +410,22 @@ contract PoolService is
293
410
  virtual
294
411
  restricted()
295
412
  {
413
+ NftId bundleNftId = policyInfo.bundleNftId;
414
+ NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
415
+ InstanceStore instanceStore = instance.getInstanceStore();
416
+
417
+ _componentService.decreasePoolBalance(
418
+ instanceStore,
419
+ poolNftId,
420
+ payoutAmount,
421
+ AmountLib.zero());
422
+
423
+ _componentService.decreaseBundleBalance(
424
+ instanceStore,
425
+ bundleNftId,
426
+ payoutAmount,
427
+ AmountLib.zero());
428
+
296
429
  _bundleService.releaseCollateral(
297
430
  instance,
298
431
  policyNftId,
@@ -347,16 +480,16 @@ contract PoolService is
347
480
  public
348
481
  view
349
482
  returns(
350
- Amount localCollateralAmount,
351
- Amount totalCollateralAmount
483
+ Amount totalCollateralAmount,
484
+ Amount localCollateralAmount
352
485
  )
353
486
  {
354
487
  NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
355
488
  IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
356
489
 
357
490
  (
358
- localCollateralAmount,
359
- totalCollateralAmount
491
+ totalCollateralAmount,
492
+ localCollateralAmount
360
493
  ) = calculateRequiredCollateral(
361
494
  poolInfo.collateralizationLevel,
362
495
  poolInfo.retentionLevel,
@@ -372,18 +505,17 @@ contract PoolService is
372
505
  public
373
506
  pure
374
507
  returns(
375
- Amount localCollateralAmount,
376
- Amount totalCollateralAmount
508
+ Amount totalCollateralAmount,
509
+ Amount localCollateralAmount
377
510
  )
378
511
  {
379
- // TODO define if only applies to local collateral
380
- // TODO add minimalistic implementation
381
-
382
- // assumptions
383
- // - collateralizationLevel == 1.0
384
- // - retentionLevel == 1.0
385
- localCollateralAmount = sumInsuredAmount;
386
- totalCollateralAmount = localCollateralAmount;
512
+ // collateralization is applied to sum insured
513
+ UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
514
+ totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
515
+
516
+ // retention level defines how much capital is required locally
517
+ localCollateralAmount = AmountLib.toAmount(
518
+ (retentionLevel * totalUFixed).toInt());
387
519
  }
388
520
 
389
521
 
@@ -406,7 +538,6 @@ contract PoolService is
406
538
  }
407
539
 
408
540
 
409
- // TODO create (I)TreasuryService that deals with all gif related token transfers
410
541
  /// @dev transfers the specified amount from the bundle owner to the pool's wallet
411
542
  function _collectStakingAmount(
412
543
  InstanceReader instanceReader,
@@ -419,15 +550,11 @@ contract PoolService is
419
550
 
420
551
  // collecting investor token
421
552
  IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
422
- TokenHandler tokenHandler = componentInfo.tokenHandler;
423
553
  address poolWallet = componentInfo.wallet;
424
-
425
- if(amount.gtz()) {
426
- tokenHandler.transfer(
427
- bundleOwner,
428
- poolWallet,
429
- amount);
430
- }
554
+ componentInfo.tokenHandler.collectTokens(
555
+ bundleOwner,
556
+ poolWallet,
557
+ amount);
431
558
  }
432
559
 
433
560
  function _getDomain() internal pure override returns(ObjectType) {
@@ -12,14 +12,14 @@ contract PoolServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with pool service implementation
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
19
  PoolService poolSrv = new PoolService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
23
  address(poolSrv),
24
24
  data,
25
25
  salt);
@@ -41,18 +41,17 @@ contract ApplicationService is
41
41
  initializer()
42
42
  {
43
43
  (
44
- address registryAddress,,
45
- //address managerAddress
44
+ address registryAddress,
46
45
  address authority
47
- ) = abi.decode(data, (address, address, address));
46
+ ) = abi.decode(data, (address, address));
48
47
 
49
- initializeService(registryAddress, address(0), owner);
48
+ _initializeService(registryAddress, authority, owner);
50
49
 
51
50
  _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
52
51
  _pricingService = IPricingService(_getServiceAddress(PRICE()));
53
52
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
54
53
 
55
- registerInterface(type(IApplicationService).interfaceId);
54
+ _registerInterface(type(IApplicationService).interfaceId);
56
55
  }
57
56
 
58
57
 
@@ -111,8 +110,7 @@ contract ApplicationService is
111
110
  view
112
111
  returns (Amount premiumAmount)
113
112
  {
114
- return AmountLib.toAmount(
115
- _pricingService.calculatePremium(
113
+ return _pricingService.calculatePremium(
116
114
  info.productNftId,
117
115
  info.riskId,
118
116
  info.sumInsuredAmount,
@@ -120,7 +118,7 @@ contract ApplicationService is
120
118
  info.applicationData,
121
119
  info.bundleNftId,
122
120
  info.referralId
123
- ).premiumAmount);
121
+ ).premiumAmount;
124
122
  }
125
123
 
126
124
 
@@ -128,6 +126,7 @@ contract ApplicationService is
128
126
  address applicationOwner,
129
127
  RiskId riskId,
130
128
  Amount sumInsuredAmount,
129
+ Amount premiumAmount,
131
130
  Seconds lifetime,
132
131
  NftId bundleNftId,
133
132
  ReferralId referralId,
@@ -135,6 +134,7 @@ contract ApplicationService is
135
134
  )
136
135
  external
137
136
  virtual
137
+ nonReentrant()
138
138
  returns (NftId applicationNftId)
139
139
  {
140
140
  (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
@@ -152,14 +152,45 @@ contract ApplicationService is
152
152
  applicationNftId = _registerApplication(productNftId, applicationOwner);
153
153
 
154
154
  // create policy info for application
155
- IPolicy.PolicyInfo memory applicationInfo = IPolicy.PolicyInfo({
155
+ IPolicy.PolicyInfo memory applicationInfo = _createApplicationInfo(
156
+ productNftId,
157
+ riskId,
158
+ sumInsuredAmount,
159
+ premiumAmount,
160
+ lifetime,
161
+ bundleNftId,
162
+ referralId,
163
+ applicationData);
164
+
165
+ // register application with instance
166
+ instance.getInstanceStore().createApplication(
167
+ applicationNftId,
168
+ applicationInfo);
169
+
170
+ // TODO: add logging
171
+ }
172
+
173
+ function _createApplicationInfo(
174
+ NftId productNftId,
175
+ RiskId riskId,
176
+ Amount sumInsuredAmount,
177
+ Amount premiumAmount,
178
+ Seconds lifetime,
179
+ NftId bundleNftId,
180
+ ReferralId referralId,
181
+ bytes memory applicationData
182
+ )
183
+ internal
184
+ virtual
185
+ returns (IPolicy.PolicyInfo memory applicationInfo)
186
+ {
187
+ return IPolicy.PolicyInfo({
156
188
  productNftId: productNftId,
157
189
  bundleNftId: bundleNftId,
158
190
  referralId: referralId,
159
191
  riskId: riskId,
160
192
  sumInsuredAmount: sumInsuredAmount,
161
- premiumAmount: AmountLib.zero(),
162
- premiumPaidAmount: AmountLib.zero(),
193
+ premiumAmount: premiumAmount,
163
194
  lifetime: lifetime,
164
195
  applicationData: applicationData,
165
196
  processData: "",
@@ -171,30 +202,18 @@ contract ApplicationService is
171
202
  expiredAt: zeroTimestamp(),
172
203
  closedAt: zeroTimestamp()
173
204
  });
174
-
175
- // TODO consider to provide this amount externally
176
- // actual calculation is done 2nd time anyway for premium collection
177
- // calculate premium amount
178
- applicationInfo.premiumAmount = _calculatePremiumAmount(applicationInfo);
179
-
180
- // register application with instance
181
- instance.getInstanceStore().createApplication(
182
- applicationNftId,
183
- applicationInfo);
184
-
185
- // TODO: add logging
186
205
  }
187
206
 
188
-
189
207
  function renew(
190
208
  NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
191
209
  NftId bundleNftId // will likely need a newer bundle for underwriting
192
210
  )
193
211
  external
194
- virtual override
212
+ virtual
213
+ nonReentrant()
195
214
  returns (NftId applicationNftId)
196
215
  {
197
-
216
+ // TODO implement
198
217
  }
199
218
 
200
219
 
@@ -208,14 +227,16 @@ contract ApplicationService is
208
227
  bytes memory applicationData
209
228
  )
210
229
  external
211
- virtual override
230
+ virtual
231
+ nonReentrant()
212
232
  {
213
-
233
+ // TODO implement
214
234
  }
215
235
 
216
236
  function revoke(NftId applicationNftId)
217
237
  external
218
- virtual override
238
+ virtual
239
+ nonReentrant()
219
240
  {
220
241
  (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
221
242
  instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());