@etherisc/gif-next 0.0.2-dd8c542-531 → 0.0.2-ddc9ec2-570

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 (703) 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/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +499 -549
  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 +265 -1337
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +423 -162
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +364 -3029
  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 +668 -397
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +586 -492
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +345 -171
  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 +30 -112
  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/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → oracle/IOracleService.sol/IOracleService.json} +303 -292
  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/pool/IBundleService.sol/IBundleService.json +938 -0
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +946 -0
  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/product/BasicProduct.sol/BasicProduct.json +1280 -0
  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 -235
  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/product/IPolicyService.sol/IPolicyService.json +800 -0
  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 -220
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +144 -112
  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 +351 -14
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +293 -239
  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 +578 -48
  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 +538 -281
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -82
  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 +360 -96
  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/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +206 -188
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +281 -103
  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/{instance/service/IBundleService.sol/IBundleService.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +380 -312
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +60 -34
  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 -35
  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 -159
  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/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +88 -20
  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 +115 -29
  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 +132 -53
  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 +189 -150
  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} +40 -43
  324. package/contracts/instance/IInstance.sol +77 -51
  325. package/contracts/instance/IInstanceService.sol +77 -19
  326. package/contracts/instance/Instance.sol +181 -391
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  329. package/contracts/instance/InstanceReader.sol +180 -87
  330. package/contracts/instance/InstanceService.sol +361 -217
  331. package/contracts/instance/InstanceServiceManager.sol +13 -31
  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} +20 -42
  338. package/contracts/instance/module/IAccess.sol +29 -21
  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/Usdc.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 +575 -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 +80 -23
  384. package/contracts/registry/IRegistryService.sol +47 -32
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +334 -143
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +114 -192
  389. package/contracts/registry/RegistryServiceManager.sol +26 -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 -58
  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 +4 -6
  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 -86
  415. package/contracts/shared/PolicyHolder.sol +99 -0
  416. package/contracts/shared/Registerable.sol +26 -41
  417. package/contracts/shared/RegistryLinked.sol +43 -0
  418. package/contracts/shared/Service.sol +57 -33
  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 +10 -7
  457. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  458. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  459. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  460. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  462. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  463. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  464. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  465. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  466. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  467. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  468. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  469. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  470. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  473. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  475. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  477. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  479. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  481. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  483. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  485. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  487. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  489. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  491. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  494. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  496. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  498. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  501. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  503. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  505. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  507. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  509. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  510. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  511. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  512. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -788
  513. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  514. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  515. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  516. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  517. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -940
  518. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  519. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  520. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  521. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  522. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  524. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  525. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  528. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  529. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  530. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  531. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  532. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -923
  535. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -440
  537. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
  539. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -671
  541. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  543. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
  546. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  548. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  550. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  551. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  552. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -971
  553. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  554. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
  555. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  556. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -705
  557. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  558. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -428
  559. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  560. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -755
  561. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  562. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  563. package/artifacts/contracts/registry/RegistryServiceAccessManager.sol/RegistryServiceAccessManager.dbg.json +0 -4
  564. package/artifacts/contracts/registry/RegistryServiceAccessManager.sol/RegistryServiceAccessManager.json +0 -275
  565. package/artifacts/contracts/registry/RegistryServiceReleaseManager.sol/RegistryServiceReleaseManager.dbg.json +0 -4
  566. package/artifacts/contracts/registry/RegistryServiceReleaseManager.sol/RegistryServiceReleaseManager.json +0 -521
  567. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  568. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  569. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  570. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  571. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  572. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  573. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  574. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  575. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  576. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  577. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  578. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  579. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  580. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  581. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  582. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  583. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  584. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  585. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  586. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  587. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  588. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  589. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  590. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  591. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  592. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  593. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  594. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  595. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  596. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  597. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  598. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  599. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  601. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  603. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  605. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  607. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  608. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  609. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  611. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  612. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  613. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  615. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  616. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  617. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  618. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  619. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  621. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  623. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  624. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  626. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  628. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  630. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  632. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  634. package/contracts/components/BaseComponent.sol +0 -132
  635. package/contracts/components/Distribution.sol +0 -163
  636. package/contracts/components/IBaseComponent.sol +0 -31
  637. package/contracts/components/IDistributionComponent.sol +0 -44
  638. package/contracts/components/IPoolComponent.sol +0 -66
  639. package/contracts/components/IProductComponent.sol +0 -35
  640. package/contracts/components/Pool.sol +0 -271
  641. package/contracts/components/Product.sol +0 -292
  642. package/contracts/experiment/cloning/Cloner.sol +0 -47
  643. package/contracts/experiment/errors/Require.sol +0 -38
  644. package/contracts/experiment/errors/Revert.sol +0 -44
  645. package/contracts/experiment/inheritance/A.sol +0 -53
  646. package/contracts/experiment/inheritance/B.sol +0 -28
  647. package/contracts/experiment/inheritance/C.sol +0 -34
  648. package/contracts/experiment/inheritance/IA.sol +0 -13
  649. package/contracts/experiment/inheritance/IB.sol +0 -10
  650. package/contracts/experiment/inheritance/IC.sol +0 -12
  651. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  652. package/contracts/experiment/statemachine/ISM.sol +0 -25
  653. package/contracts/experiment/statemachine/SM.sol +0 -57
  654. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  655. package/contracts/experiment/types/TypeA.sol +0 -47
  656. package/contracts/experiment/types/TypeB.sol +0 -29
  657. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  658. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  659. package/contracts/instance/IInstanceBase.sol +0 -26
  660. package/contracts/instance/InstanceAccessManager.sol +0 -288
  661. package/contracts/instance/InstanceBase.sol +0 -41
  662. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  663. package/contracts/instance/base/IInstanceBase.sol +0 -23
  664. package/contracts/instance/base/KeyValueStore.sol +0 -172
  665. package/contracts/instance/base/Lifecycle.sol +0 -100
  666. package/contracts/instance/module/ISetup.sol +0 -46
  667. package/contracts/instance/module/ITreasury.sol +0 -23
  668. package/contracts/instance/service/BundleService.sol +0 -260
  669. package/contracts/instance/service/BundleServiceManager.sol +0 -55
  670. package/contracts/instance/service/ComponentOwnerService.sol +0 -315
  671. package/contracts/instance/service/DistributionService.sol +0 -114
  672. package/contracts/instance/service/DistributionServiceManager.sol +0 -55
  673. package/contracts/instance/service/IBundleService.sol +0 -45
  674. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  675. package/contracts/instance/service/IDistributionService.sol +0 -12
  676. package/contracts/instance/service/IPolicyService.sol +0 -87
  677. package/contracts/instance/service/IPoolService.sol +0 -20
  678. package/contracts/instance/service/IProductService.sol +0 -40
  679. package/contracts/instance/service/PolicyService.sol +0 -503
  680. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  681. package/contracts/instance/service/PoolService.sol +0 -122
  682. package/contracts/instance/service/PoolServiceManager.sol +0 -55
  683. package/contracts/instance/service/ProductService.sol +0 -168
  684. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  685. package/contracts/registry/RegistryServiceAccessManager.sol +0 -210
  686. package/contracts/registry/RegistryServiceReleaseManager.sol +0 -366
  687. package/contracts/shared/ContractDeployerLib.sol +0 -72
  688. package/contracts/shared/ERC165.sol +0 -25
  689. package/contracts/shared/ProxyManager.sol +0 -94
  690. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  691. package/contracts/shared/Versionable.sol +0 -147
  692. package/contracts/test/TestFee.sol +0 -25
  693. package/contracts/test/TestRegisterable.sol +0 -18
  694. package/contracts/test/TestRoleId.sol +0 -14
  695. package/contracts/test/TestService.sol +0 -25
  696. package/contracts/test/TestToken.sol +0 -26
  697. package/contracts/test/TestVersion.sol +0 -44
  698. package/contracts/test/TestVersionable.sol +0 -17
  699. package/contracts/types/ChainId.sol +0 -38
  700. package/contracts/types/NumberId.sol +0 -52
  701. package/contracts/types/ObjectType.sol +0 -152
  702. package/contracts/types/RoleId.sol +0 -91
  703. /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
+ }