@etherisc/gif-next 0.0.2-cf68d0c-530 → 0.0.2-cfc7167-648

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