@etherisc/gif-next 0.0.2-c2a8d66-341 → 0.0.2-c2daf33-461

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 (676) hide show
  1. package/README.md +56 -18
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1518 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1196 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1557 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +854 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +943 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +945 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +237 -1565
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +363 -198
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +442 -2597
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +689 -377
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +510 -400
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +370 -109
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3469 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +12 -115
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → oracle/IOracleComponent.sol/IOracleComponent.json} +246 -293
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1055 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1432 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1521 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +830 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +486 -263
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +355 -323
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1213 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1218 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1700 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +798 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +852 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → product/BasicProduct.sol/BasicProduct.json} +750 -218
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1339 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +826 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +216 -230
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +788 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +340 -306
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +270 -215
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +363 -327
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +126 -167
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1276 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +782 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1238 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +196 -29
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +226 -267
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +457 -44
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +506 -254
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -95
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +349 -82
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +858 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1712 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +178 -242
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components/Component.sol/Component.json → shared/IComponent.sol/IComponent.json} +192 -217
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +285 -261
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -30
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.json +84 -154
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +977 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +108 -35
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +131 -60
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +188 -157
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +107 -6
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  232. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  233. package/artifacts/contracts/staking/Staking.sol/Staking.json +1991 -0
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +773 -0
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  286. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  294. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  298. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  304. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  306. package/contracts/authorization/AccessAdmin.sol +591 -0
  307. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  308. package/contracts/authorization/Authorization.sol +218 -0
  309. package/contracts/authorization/IAccess.sol +48 -0
  310. package/contracts/authorization/IAccessAdmin.sol +136 -0
  311. package/contracts/authorization/IAuthorization.sol +54 -0
  312. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  313. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  314. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  316. package/contracts/distribution/BasicDistribution.sol +138 -0
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  318. package/contracts/distribution/Distribution.sol +295 -0
  319. package/contracts/distribution/DistributionService.sol +336 -0
  320. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  321. package/contracts/distribution/IDistributionComponent.sol +52 -0
  322. package/contracts/distribution/IDistributionService.sol +97 -0
  323. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +33 -32
  324. package/contracts/instance/IInstance.sol +61 -47
  325. package/contracts/instance/IInstanceService.sol +72 -22
  326. package/contracts/instance/Instance.sol +178 -193
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  329. package/contracts/instance/InstanceReader.sol +180 -65
  330. package/contracts/instance/InstanceService.sol +339 -345
  331. package/contracts/instance/InstanceServiceManager.sol +13 -27
  332. package/contracts/instance/InstanceStore.sol +277 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +105 -0
  337. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
  338. package/contracts/instance/module/IAccess.sol +8 -16
  339. package/contracts/instance/module/IBundle.sol +8 -8
  340. package/contracts/instance/module/IComponents.sol +46 -0
  341. package/contracts/instance/module/IDistribution.sol +6 -4
  342. package/contracts/instance/module/IPolicy.sol +56 -17
  343. package/contracts/instance/module/IRisk.sol +1 -1
  344. package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
  345. package/contracts/oracle/BasicOracle.sol +48 -0
  346. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  347. package/contracts/oracle/IOracle.sol +36 -0
  348. package/contracts/oracle/IOracleComponent.sol +33 -0
  349. package/contracts/oracle/IOracleService.sol +65 -0
  350. package/contracts/oracle/Oracle.sol +166 -0
  351. package/contracts/oracle/OracleService.sol +278 -0
  352. package/contracts/oracle/OracleServiceManager.sol +39 -0
  353. package/contracts/pool/BasicPool.sol +166 -0
  354. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  355. package/contracts/pool/BundleService.sol +450 -0
  356. package/contracts/pool/BundleServiceManager.sol +39 -0
  357. package/contracts/pool/IBundleService.sol +135 -0
  358. package/contracts/pool/IPoolComponent.sol +58 -0
  359. package/contracts/pool/IPoolService.sol +149 -0
  360. package/contracts/pool/Pool.sol +328 -0
  361. package/contracts/pool/PoolService.sol +559 -0
  362. package/contracts/pool/PoolServiceManager.sol +39 -0
  363. package/contracts/product/ApplicationService.sol +250 -0
  364. package/contracts/product/ApplicationServiceManager.sol +38 -0
  365. package/contracts/product/BasicProduct.sol +52 -0
  366. package/contracts/product/BasicProductAuthorization.sol +43 -0
  367. package/contracts/product/ClaimService.sol +424 -0
  368. package/contracts/product/ClaimServiceManager.sol +38 -0
  369. package/contracts/product/IApplicationService.sol +63 -0
  370. package/contracts/product/IClaimService.sol +100 -0
  371. package/contracts/product/IPolicyService.sol +84 -0
  372. package/contracts/product/IPricingService.sol +39 -0
  373. package/contracts/product/IProductComponent.sol +40 -0
  374. package/contracts/product/IProductService.sol +33 -0
  375. package/contracts/product/PolicyService.sol +578 -0
  376. package/contracts/product/PolicyServiceManager.sol +39 -0
  377. package/contracts/product/PricingService.sol +304 -0
  378. package/contracts/product/PricingServiceManager.sol +39 -0
  379. package/contracts/product/Product.sol +413 -0
  380. package/contracts/product/ProductService.sol +99 -0
  381. package/contracts/product/ProductServiceManager.sol +39 -0
  382. package/contracts/registry/ChainNft.sol +16 -1
  383. package/contracts/registry/IRegistry.sol +60 -26
  384. package/contracts/registry/IRegistryService.sol +47 -43
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +251 -132
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +105 -115
  389. package/contracts/registry/RegistryServiceManager.sol +24 -33
  390. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  391. package/contracts/registry/ReleaseRegistry.sol +485 -0
  392. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  393. package/contracts/registry/TokenRegistry.sol +263 -60
  394. package/contracts/shared/Component.sol +281 -0
  395. package/contracts/shared/ComponentService.sol +650 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/shared/IComponent.sol +71 -0
  399. package/contracts/shared/IComponentService.sol +108 -0
  400. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  401. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  402. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  403. package/contracts/shared/INftOwnable.sol +13 -12
  404. package/contracts/shared/IPolicyHolder.sol +45 -0
  405. package/contracts/shared/IRegisterable.sol +3 -3
  406. package/contracts/shared/IRegistryLinked.sol +11 -0
  407. package/contracts/shared/IService.sol +15 -6
  408. package/contracts/shared/InitializableCustom.sol +177 -0
  409. package/contracts/shared/InitializableERC165.sol +27 -0
  410. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  411. package/contracts/shared/KeyValueStore.sol +131 -0
  412. package/contracts/shared/Lifecycle.sol +77 -0
  413. package/contracts/shared/NftIdSet.sol +65 -0
  414. package/contracts/shared/NftOwnable.sol +59 -91
  415. package/contracts/shared/PolicyHolder.sol +99 -0
  416. package/contracts/shared/Registerable.sol +19 -30
  417. package/contracts/shared/RegistryLinked.sol +43 -0
  418. package/contracts/shared/Service.sol +54 -32
  419. package/contracts/shared/TokenHandler.sol +41 -6
  420. package/contracts/staking/IStaking.sol +167 -0
  421. package/contracts/staking/IStakingService.sol +160 -0
  422. package/contracts/staking/StakeManagerLib.sol +231 -0
  423. package/contracts/staking/Staking.sol +516 -0
  424. package/contracts/staking/StakingLifecycle.sol +23 -0
  425. package/contracts/staking/StakingManager.sol +50 -0
  426. package/contracts/staking/StakingReader.sol +183 -0
  427. package/contracts/staking/StakingService.sol +407 -0
  428. package/contracts/staking/StakingServiceManager.sol +44 -0
  429. package/contracts/staking/StakingStore.sol +605 -0
  430. package/contracts/staking/TargetManagerLib.sol +207 -0
  431. package/contracts/{types → type}/AddressSet.sol +1 -1
  432. package/contracts/type/Amount.sol +135 -0
  433. package/contracts/{types → type}/Blocknumber.sol +27 -3
  434. package/contracts/type/ClaimId.sol +75 -0
  435. package/contracts/{types → type}/DistributorType.sol +2 -2
  436. package/contracts/{types → type}/Fee.sol +33 -23
  437. package/contracts/{types → type}/NftId.sol +21 -15
  438. package/contracts/{types → type}/NftIdSet.sol +2 -2
  439. package/contracts/type/ObjectType.sol +271 -0
  440. package/contracts/type/PayoutId.sol +82 -0
  441. package/contracts/{types → type}/Referral.sol +6 -1
  442. package/contracts/type/RequestId.sol +75 -0
  443. package/contracts/{types → type}/RiskId.sol +1 -1
  444. package/contracts/type/RoleId.sol +174 -0
  445. package/contracts/type/Seconds.sol +93 -0
  446. package/contracts/type/Selector.sol +102 -0
  447. package/contracts/{types → type}/StateId.sol +34 -4
  448. package/contracts/type/String.sol +53 -0
  449. package/contracts/{types → type}/Timestamp.sol +34 -15
  450. package/contracts/{types → type}/UFixed.sol +35 -9
  451. package/contracts/{types → type}/Version.sol +5 -2
  452. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  453. package/contracts/upgradeability/ProxyManager.sol +198 -0
  454. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  455. package/contracts/upgradeability/Versionable.sol +59 -0
  456. package/package.json +8 -5
  457. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  458. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  459. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  460. package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -455
  461. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  462. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -648
  463. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  464. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  465. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  466. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  469. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  473. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  475. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  477. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  479. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  481. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  483. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  485. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  487. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  490. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  492. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  494. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  497. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  499. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  501. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  503. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  505. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  506. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  507. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  508. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  509. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1170
  510. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  511. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  512. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  516. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  517. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  518. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  519. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  520. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  522. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1102
  523. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  524. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
  525. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  526. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
  527. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  528. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
  529. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
  536. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
  538. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
  540. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
  542. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
  544. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
  546. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  547. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  548. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  549. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  550. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  551. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  552. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  553. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  554. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  555. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  556. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -362
  558. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  560. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  561. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  562. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  563. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  564. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  565. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
  566. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  568. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
  570. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  572. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  573. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  574. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  575. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  576. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  577. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  578. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  579. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  580. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  582. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  584. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  586. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  588. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  589. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  590. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  591. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  592. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  593. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  594. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  595. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  596. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  598. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  600. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  602. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  604. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  607. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  609. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  611. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  612. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  613. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  615. package/contracts/components/Component.sol +0 -216
  616. package/contracts/components/Distribution.sol +0 -153
  617. package/contracts/components/IComponent.sol +0 -43
  618. package/contracts/components/IDistributionComponent.sol +0 -47
  619. package/contracts/components/IPoolComponent.sol +0 -51
  620. package/contracts/components/IProductComponent.sol +0 -39
  621. package/contracts/components/Pool.sol +0 -208
  622. package/contracts/components/Product.sol +0 -266
  623. package/contracts/experiment/cloning/Cloner.sol +0 -47
  624. package/contracts/experiment/errors/Require.sol +0 -38
  625. package/contracts/experiment/errors/Revert.sol +0 -44
  626. package/contracts/experiment/inheritance/A.sol +0 -53
  627. package/contracts/experiment/inheritance/B.sol +0 -28
  628. package/contracts/experiment/inheritance/C.sol +0 -34
  629. package/contracts/experiment/inheritance/IA.sol +0 -13
  630. package/contracts/experiment/inheritance/IB.sol +0 -10
  631. package/contracts/experiment/inheritance/IC.sol +0 -12
  632. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  633. package/contracts/experiment/statemachine/ISM.sol +0 -25
  634. package/contracts/experiment/statemachine/SM.sol +0 -57
  635. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  636. package/contracts/experiment/types/TypeA.sol +0 -47
  637. package/contracts/experiment/types/TypeB.sol +0 -29
  638. package/contracts/instance/InstanceAccessManager.sol +0 -455
  639. package/contracts/instance/base/ComponentService.sol +0 -134
  640. package/contracts/instance/base/KeyValueStore.sol +0 -172
  641. package/contracts/instance/base/Lifecycle.sol +0 -100
  642. package/contracts/instance/module/ISetup.sol +0 -46
  643. package/contracts/instance/module/ITreasury.sol +0 -23
  644. package/contracts/instance/service/BundleService.sol +0 -293
  645. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  646. package/contracts/instance/service/DistributionService.sol +0 -106
  647. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  648. package/contracts/instance/service/IBundleService.sol +0 -44
  649. package/contracts/instance/service/IDistributionService.sol +0 -12
  650. package/contracts/instance/service/IPolicyService.sol +0 -94
  651. package/contracts/instance/service/IPoolService.sol +0 -20
  652. package/contracts/instance/service/IProductService.sol +0 -40
  653. package/contracts/instance/service/PolicyService.sol +0 -538
  654. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  655. package/contracts/instance/service/PoolService.sol +0 -110
  656. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  657. package/contracts/instance/service/ProductService.sol +0 -233
  658. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  659. package/contracts/registry/RegistryAccessManager.sol +0 -216
  660. package/contracts/registry/ReleaseManager.sol +0 -332
  661. package/contracts/shared/ContractDeployerLib.sol +0 -72
  662. package/contracts/shared/ERC165.sol +0 -25
  663. package/contracts/shared/ProxyManager.sol +0 -94
  664. package/contracts/shared/Versionable.sol +0 -147
  665. package/contracts/test/TestFee.sol +0 -25
  666. package/contracts/test/TestRegisterable.sol +0 -18
  667. package/contracts/test/TestRoleId.sol +0 -14
  668. package/contracts/test/TestService.sol +0 -25
  669. package/contracts/test/TestVersion.sol +0 -44
  670. package/contracts/test/TestVersionable.sol +0 -17
  671. package/contracts/test/Usdc.sol +0 -26
  672. package/contracts/types/ChainId.sol +0 -38
  673. package/contracts/types/NumberId.sol +0 -52
  674. package/contracts/types/ObjectType.sol +0 -152
  675. package/contracts/types/RoleId.sol +0 -93
  676. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,559 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IBundle} from "../instance/module/IBundle.sol";
7
+ import {IBundleService} from "./IBundleService.sol";
8
+ import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {IComponentService} from "../shared/IComponentService.sol";
10
+ import {IInstance} from "../instance/IInstance.sol";
11
+ import {IInstanceService} from "../instance/IInstanceService.sol";
12
+ import {IPolicy} from "../instance/module/IPolicy.sol";
13
+ import {IPoolService} from "./IPoolService.sol";
14
+ import {IRegistry} from "../registry/IRegistry.sol";
15
+ import {IRegistryService} from "../registry/IRegistryService.sol";
16
+ import {IStaking} from "../staking/IStaking.sol";
17
+
18
+ import {Amount, AmountLib} from "../type/Amount.sol";
19
+ import {Fee, FeeLib} from "../type/Fee.sol";
20
+ import {NftId} from "../type/NftId.sol";
21
+ import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
22
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
23
+ import {Fee, FeeLib} from "../type/Fee.sol";
24
+ import {KEEP_STATE} from "../type/StateId.sol";
25
+ import {Seconds} from "../type/Seconds.sol";
26
+ import {TokenHandler} from "../shared/TokenHandler.sol";
27
+ import {UFixed} from "../type/UFixed.sol";
28
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
29
+ import {InstanceReader} from "../instance/InstanceReader.sol";
30
+ import {InstanceStore} from "../instance/InstanceStore.sol";
31
+
32
+ string constant POOL_SERVICE_NAME = "PoolService";
33
+
34
+ contract PoolService is
35
+ ComponentVerifyingService,
36
+ IPoolService
37
+ {
38
+ IBundleService internal _bundleService;
39
+ IComponentService internal _componentService;
40
+ IInstanceService private _instanceService;
41
+ IRegistryService private _registryService;
42
+
43
+ IStaking private _staking;
44
+
45
+ function _initialize(
46
+ address owner,
47
+ bytes memory data
48
+ )
49
+ internal
50
+ initializer
51
+ virtual override
52
+ {
53
+ (
54
+ address registryAddress,,
55
+ //address managerAddress
56
+ address authority
57
+ ) = abi.decode(data, (address, address, address));
58
+
59
+ initializeService(registryAddress, authority, owner);
60
+
61
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
62
+ _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
63
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
64
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
65
+
66
+ _staking = IStaking(getRegistry().getStakingAddress());
67
+
68
+ registerInterface(type(IPoolService).interfaceId);
69
+ }
70
+
71
+ /// @inheritdoc IPoolService
72
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
73
+ external
74
+ virtual
75
+ {
76
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
77
+ InstanceReader instanceReader = instance.getInstanceReader();
78
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
79
+
80
+ Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
81
+ poolInfo.maxBalanceAmount = maxBalanceAmount;
82
+ instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
83
+
84
+ emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
85
+ }
86
+
87
+ function setBundleOwnerRole(RoleId bundleOwnerRole)
88
+ external
89
+ virtual
90
+ {
91
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
92
+ InstanceReader instanceReader = instance.getInstanceReader();
93
+
94
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
95
+ IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
96
+
97
+ // bundle owner role may only be set once per pool
98
+ if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
99
+ revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
100
+ }
101
+
102
+ poolInfo.bundleOwnerRole = bundleOwnerRole;
103
+ instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
104
+
105
+ emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
106
+ }
107
+
108
+ /// @inheritdoc IPoolService
109
+ function createBundle(
110
+ address bundleOwner, // initial bundle owner
111
+ Fee memory fee, // fees deducted from premium that go to bundle owner
112
+ Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
113
+ Seconds lifetime, // initial duration for which new policies are covered
114
+ bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
115
+ )
116
+ external
117
+ virtual
118
+ returns(NftId bundleNftId, Amount netStakedAmount)
119
+ {
120
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
121
+
122
+ {
123
+ InstanceReader instanceReader = instance.getInstanceReader();
124
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
125
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
126
+ if (currentPoolBalance + stakingAmount > poolInfo.maxBalanceAmount) {
127
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, stakingAmount);
128
+ }
129
+ }
130
+
131
+
132
+ Amount stakingFeeAmount;
133
+ (stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
134
+ _getStakingFee(instance.getInstanceReader(), poolNftId),
135
+ stakingAmount);
136
+
137
+
138
+ bundleNftId = _bundleService.create(
139
+ instance,
140
+ poolNftId,
141
+ bundleOwner,
142
+ fee,
143
+ netStakedAmount,
144
+ lifetime,
145
+ filter);
146
+
147
+ // pool book keeping
148
+ _componentService.increasePoolBalance(
149
+ instance.getInstanceStore(),
150
+ poolNftId,
151
+ netStakedAmount,
152
+ stakingFeeAmount);
153
+
154
+ // pool bookkeeping and collect tokens from bundle owner
155
+ _collectStakingAmount(
156
+ instance.getInstanceReader(),
157
+ poolNftId,
158
+ bundleOwner,
159
+ stakingAmount);
160
+
161
+ emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
162
+ }
163
+
164
+ function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
165
+ internal
166
+ virtual
167
+ view
168
+ returns (Fee memory stakingFee)
169
+ {
170
+ NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
171
+ return instanceReader.getProductInfo(productNftId).stakingFee;
172
+ }
173
+
174
+ function closeBundle(NftId bundleNftId)
175
+ external
176
+ virtual
177
+ {
178
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
179
+
180
+ // TODO get performance fee for pool (#477)
181
+
182
+ // releasing collateral in bundle
183
+ (Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
184
+
185
+ _componentService.decreasePoolBalance(
186
+ instance.getInstanceStore(),
187
+ poolNftId,
188
+ unstakedAmount + feeAmount,
189
+ AmountLib.zero());
190
+
191
+ emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
192
+
193
+ if ((unstakedAmount + feeAmount).gtz()){
194
+ IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
195
+ TokenHandler tokenHandler = poolComponentInfo.tokenHandler;
196
+ IERC20Metadata token = IERC20Metadata(poolComponentInfo.token);
197
+
198
+ // TODO: centralize token handling (issue #471)
199
+
200
+ // check allowance
201
+ uint256 tokenAllowance = token.allowance(poolComponentInfo.wallet, address(tokenHandler));
202
+ if (tokenAllowance < (unstakedAmount.toInt() + feeAmount.toInt())) {
203
+ revert ErrorPoolServiceWalletAllowanceTooSmall(
204
+ poolComponentInfo.wallet,
205
+ address(tokenHandler),
206
+ tokenAllowance,
207
+ unstakedAmount.toInt() + feeAmount.toInt());
208
+ }
209
+
210
+ // transfer amount to bundle owner
211
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
212
+ tokenHandler.transfer(poolComponentInfo.wallet, bundleOwner, unstakedAmount + feeAmount);
213
+ }
214
+ }
215
+
216
+ /// @inheritdoc IPoolService
217
+ function stake(NftId bundleNftId, Amount amount)
218
+ external
219
+ virtual
220
+ // TODO: restricted() (once #462 is done)
221
+ returns(Amount netAmount)
222
+ {
223
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
224
+ InstanceReader instanceReader = instance.getInstanceReader();
225
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
226
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
227
+
228
+ if (bundleInfo.poolNftId != poolNftId) {
229
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
230
+ }
231
+
232
+ {
233
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
234
+ if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
235
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
236
+ }
237
+ }
238
+
239
+ // calculate fees
240
+ Amount feeAmount;
241
+ (
242
+ feeAmount,
243
+ netAmount
244
+ ) = FeeLib.calculateFee(
245
+ _getStakingFee(instanceReader, poolNftId),
246
+ amount);
247
+
248
+ // do all the bookkeeping
249
+ _componentService.increasePoolBalance(
250
+ instance.getInstanceStore(),
251
+ poolNftId,
252
+ netAmount,
253
+ feeAmount);
254
+
255
+ _bundleService.stake(instance, bundleNftId, netAmount);
256
+
257
+ // collect tokens from bundle owner
258
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
259
+ emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
260
+ _collectStakingAmount(
261
+ instanceReader,
262
+ poolNftId,
263
+ bundleOwner,
264
+ amount);
265
+ }
266
+
267
+ /// @inheritdoc IPoolService
268
+ function unstake(NftId bundleNftId, Amount amount)
269
+ external
270
+ virtual
271
+ // TODO: restricted() (once #462 is done)
272
+ returns(Amount netAmount)
273
+ {
274
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
275
+ InstanceReader instanceReader = instance.getInstanceReader();
276
+ InstanceStore instanceStore = instance.getInstanceStore();
277
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
278
+
279
+ if (bundleInfo.poolNftId != poolNftId) {
280
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
281
+ }
282
+
283
+ if (amount.eqz()) {
284
+ revert ErrorPoolServiceAmountIsZero();
285
+ }
286
+
287
+ // call bundle service for bookkeeping and additional checks
288
+ Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
289
+
290
+ // Important: from now on work only with unstakedAmount as it is the only reliable amount.
291
+ // if amount was max, this was set to the available amount
292
+
293
+ // TODO: handle performance fees (issue #477)
294
+
295
+ // update pool bookkeeping - performance fees stay in the pool, but as fees
296
+ _componentService.decreasePoolBalance(
297
+ instanceStore,
298
+ poolNftId,
299
+ unstakedAmount,
300
+ AmountLib.zero());
301
+
302
+ IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
303
+ address poolWallet = poolComponentInfo.wallet;
304
+
305
+ // check allowance
306
+ {
307
+ IERC20Metadata token = IERC20Metadata(poolComponentInfo.token);
308
+ uint256 tokenAllowance = token.allowance(poolWallet, address(poolComponentInfo.tokenHandler));
309
+ if (tokenAllowance < unstakedAmount.toInt()) {
310
+ revert ErrorPoolServiceWalletAllowanceTooSmall(poolWallet, address(poolComponentInfo.tokenHandler), tokenAllowance, amount.toInt());
311
+ }
312
+ }
313
+
314
+ // transfer amount to bundle owner
315
+ address owner = getRegistry().ownerOf(bundleNftId);
316
+ emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
317
+ // TODO: centralize token handling (issue #471)
318
+ poolComponentInfo.tokenHandler.transfer(poolWallet, owner, unstakedAmount);
319
+ return unstakedAmount;
320
+ }
321
+
322
+ function processSale(
323
+ NftId bundleNftId,
324
+ IPolicy.Premium memory premium
325
+ )
326
+ external
327
+ virtual
328
+ restricted()
329
+ {
330
+ IRegistry registry = getRegistry();
331
+ IRegistry.ObjectInfo memory bundleObjectInfo = registry.getObjectInfo(bundleNftId);
332
+ IRegistry.ObjectInfo memory poolObjectInfo = registry.getObjectInfo(bundleObjectInfo.parentNftId);
333
+ IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
334
+ IInstance instance = IInstance(instanceObjectInfo.objectAddress);
335
+
336
+ Amount poolFeeAmount = AmountLib.toAmount(premium.poolFeeFixAmount + premium.poolFeeVarAmount);
337
+ Amount bundleFeeAmount = AmountLib.toAmount(premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
338
+ Amount bundleNetAmount = AmountLib.toAmount(premium.netPremiumAmount);
339
+
340
+ InstanceStore instanceStore = instance.getInstanceStore();
341
+ _componentService.increasePoolBalance(
342
+ instanceStore,
343
+ poolObjectInfo.nftId,
344
+ bundleNetAmount + bundleFeeAmount,
345
+ poolFeeAmount);
346
+
347
+ _componentService.increaseBundleBalance(
348
+ instanceStore,
349
+ bundleObjectInfo.nftId,
350
+ bundleNetAmount,
351
+ bundleFeeAmount);
352
+ }
353
+
354
+
355
+ function lockCollateral(
356
+ IInstance instance,
357
+ address token,
358
+ NftId productNftId,
359
+ NftId applicationNftId,
360
+ NftId bundleNftId,
361
+ Amount sumInsuredAmount // premium amount after product and distribution fees
362
+ )
363
+ external
364
+ virtual
365
+ restricted()
366
+ returns (
367
+ Amount localCollateralAmount,
368
+ Amount totalCollateralAmount
369
+ )
370
+ {
371
+ (
372
+ localCollateralAmount,
373
+ totalCollateralAmount
374
+ ) = calculateRequiredCollateral(
375
+ instance.getInstanceReader(),
376
+ productNftId,
377
+ sumInsuredAmount);
378
+
379
+ // lock collateral amount from involved bundle
380
+ _bundleService.lockCollateral(
381
+ instance,
382
+ applicationNftId,
383
+ bundleNftId,
384
+ localCollateralAmount);
385
+
386
+ // update value locked with staking service
387
+ _staking.increaseTotalValueLocked(
388
+ instance.getNftId(),
389
+ token,
390
+ totalCollateralAmount);
391
+
392
+ // hierarhical riskpool setup
393
+ // TODO loop in with pool component to guarantee availability of external capital
394
+ if(totalCollateralAmount > localCollateralAmount) {
395
+
396
+ }
397
+ }
398
+
399
+
400
+ function reduceCollateral(
401
+ IInstance instance,
402
+ address token,
403
+ NftId policyNftId,
404
+ IPolicy.PolicyInfo memory policyInfo,
405
+ Amount payoutAmount
406
+ )
407
+ external
408
+ virtual
409
+ restricted()
410
+ {
411
+ _bundleService.releaseCollateral(
412
+ instance,
413
+ policyNftId,
414
+ policyInfo.bundleNftId,
415
+ payoutAmount);
416
+
417
+ // update value locked with staking service
418
+ _staking.decreaseTotalValueLocked(
419
+ instance.getNftId(),
420
+ token,
421
+ payoutAmount);
422
+ }
423
+
424
+
425
+ /// @dev releases the remaining collateral linked to the specified policy
426
+ /// may only be called by the policy service for unlocked pool components
427
+ function releaseCollateral(
428
+ IInstance instance,
429
+ address token,
430
+ NftId policyNftId,
431
+ IPolicy.PolicyInfo memory policyInfo
432
+ )
433
+ external
434
+ virtual
435
+ restricted()
436
+ {
437
+ Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
438
+
439
+ _bundleService.releaseCollateral(
440
+ instance,
441
+ policyNftId,
442
+ policyInfo.bundleNftId,
443
+ remainingCollateralAmount);
444
+
445
+ _bundleService.unlinkPolicy(
446
+ instance,
447
+ policyNftId);
448
+
449
+ // update value locked with staking service
450
+ _staking.decreaseTotalValueLocked(
451
+ instance.getNftId(),
452
+ token,
453
+ remainingCollateralAmount);
454
+ }
455
+
456
+
457
+ function calculateRequiredCollateral(
458
+ InstanceReader instanceReader,
459
+ NftId productNftId,
460
+ Amount sumInsuredAmount
461
+ )
462
+ public
463
+ view
464
+ returns(
465
+ Amount localCollateralAmount,
466
+ Amount totalCollateralAmount
467
+ )
468
+ {
469
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
470
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
471
+
472
+ (
473
+ localCollateralAmount,
474
+ totalCollateralAmount
475
+ ) = calculateRequiredCollateral(
476
+ poolInfo.collateralizationLevel,
477
+ poolInfo.retentionLevel,
478
+ sumInsuredAmount);
479
+ }
480
+
481
+
482
+ function calculateRequiredCollateral(
483
+ UFixed collateralizationLevel,
484
+ UFixed retentionLevel,
485
+ Amount sumInsuredAmount
486
+ )
487
+ public
488
+ pure
489
+ returns(
490
+ Amount localCollateralAmount,
491
+ Amount totalCollateralAmount
492
+ )
493
+ {
494
+ // TODO define if only applies to local collateral
495
+ // TODO add minimalistic implementation
496
+
497
+ // assumptions
498
+ // - collateralizationLevel == 1.0
499
+ // - retentionLevel == 1.0
500
+ localCollateralAmount = sumInsuredAmount;
501
+ totalCollateralAmount = localCollateralAmount;
502
+ }
503
+
504
+
505
+ function _processStakingFees(
506
+ Fee memory stakingFee,
507
+ Amount stakingAmount
508
+ )
509
+ internal
510
+ returns (Amount stakingNetAmount)
511
+ {
512
+ stakingNetAmount = stakingAmount;
513
+
514
+ // check if any staking fees apply
515
+ if (FeeLib.gtz(stakingFee)) {
516
+ (Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
517
+ stakingNetAmount = netAmount;
518
+
519
+ // TODO update fee balance for pool
520
+ }
521
+ }
522
+
523
+
524
+ // TODO create (I)TreasuryService that deals with all gif related token transfers
525
+ /// @dev transfers the specified amount from the bundle owner to the pool's wallet
526
+ function _collectStakingAmount(
527
+ InstanceReader instanceReader,
528
+ NftId poolNftId,
529
+ address bundleOwner,
530
+ Amount amount
531
+ )
532
+ internal
533
+ {
534
+
535
+ // collecting investor token
536
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
537
+ TokenHandler tokenHandler = componentInfo.tokenHandler;
538
+ address poolWallet = componentInfo.wallet;
539
+
540
+ if(amount.gtz()) {
541
+ uint256 allowance = IERC20Metadata(componentInfo.token).allowance(bundleOwner, address(tokenHandler));
542
+ if (allowance < amount.toInt()) {
543
+ revert ErrorPoolServiceWalletAllowanceTooSmall(bundleOwner, address(tokenHandler), allowance, amount.toInt());
544
+ }
545
+
546
+ // TODO: centralize token handling (issue #471)
547
+ tokenHandler.transfer(
548
+ bundleOwner,
549
+ poolWallet,
550
+ amount);
551
+ } else {
552
+ revert ErrorPoolServiceAmountIsZero();
553
+ }
554
+ }
555
+
556
+ function _getDomain() internal pure override returns(ObjectType) {
557
+ return POOL();
558
+ }
559
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {PoolService} from "./PoolService.sol";
7
+
8
+ contract PoolServiceManager is ProxyManager {
9
+
10
+ PoolService private _poolService;
11
+
12
+ /// @dev initializes proxy manager with pool service implementation
13
+ constructor(
14
+ address authority,
15
+ address registryAddress,
16
+ bytes32 salt
17
+ )
18
+ ProxyManager(registryAddress)
19
+ {
20
+ PoolService poolSrv = new PoolService{salt: salt}();
21
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
22
+ IVersionable versionable = deployDetermenistic(
23
+ address(poolSrv),
24
+ data,
25
+ salt);
26
+
27
+ _poolService = PoolService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getPoolService()
32
+ external
33
+ view
34
+ returns (PoolService poolService)
35
+ {
36
+ return _poolService;
37
+ }
38
+
39
+ }