@etherisc/gif-next 0.0.2-d81820a-051 → 0.0.2-d87995e-298

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 (677) hide show
  1. package/README.md +53 -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 +1548 -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 +1234 -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 +274 -1320
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +444 -172
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +389 -3093
  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 +657 -349
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +587 -397
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +349 -127
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3581 -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 +1185 -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 +1093 -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 +1520 -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 +1300 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +786 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +383 -338
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1002 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1312 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -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 +1315 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -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} +236 -190
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +733 -0
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IPricingService.sol/IPricingService.json} +290 -187
  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 +1196 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -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 +1276 -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 +377 -112
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +290 -297
  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 +611 -189
  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 +477 -318
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +337 -133
  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 +896 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1696 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -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} +208 -209
  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/IPoolService.sol/IPoolService.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +379 -370
  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 +1015 -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 +60 -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 +2005 -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 +761 -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 +198 -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 +293 -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 +337 -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 +68 -38
  325. package/contracts/instance/IInstanceService.sol +78 -18
  326. package/contracts/instance/Instance.sol +181 -381
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  329. package/contracts/instance/InstanceReader.sol +173 -83
  330. package/contracts/instance/InstanceService.sol +388 -177
  331. package/contracts/instance/InstanceServiceManager.sol +13 -30
  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 +106 -0
  337. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +21 -37
  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 +51 -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} +5 -5
  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 +164 -0
  354. package/contracts/pool/BasicPoolAuthorization.sol +55 -0
  355. package/contracts/pool/BundleService.sol +341 -0
  356. package/contracts/pool/BundleServiceManager.sol +39 -0
  357. package/contracts/pool/IBundleService.sol +120 -0
  358. package/contracts/pool/IPoolComponent.sol +58 -0
  359. package/contracts/pool/IPoolService.sol +150 -0
  360. package/contracts/pool/Pool.sol +328 -0
  361. package/contracts/pool/PoolService.sol +434 -0
  362. package/contracts/pool/PoolServiceManager.sol +39 -0
  363. package/contracts/product/ApplicationService.sol +230 -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 +417 -0
  368. package/contracts/product/ClaimServiceManager.sol +38 -0
  369. package/contracts/product/IApplicationService.sol +62 -0
  370. package/contracts/product/IClaimService.sol +99 -0
  371. package/contracts/product/IPolicyService.sol +80 -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 +499 -0
  376. package/contracts/product/PolicyServiceManager.sol +39 -0
  377. package/contracts/product/PricingService.sol +300 -0
  378. package/contracts/product/PricingServiceManager.sol +39 -0
  379. package/contracts/product/Product.sol +401 -0
  380. package/contracts/product/ProductService.sol +99 -0
  381. package/contracts/product/ProductServiceManager.sol +39 -0
  382. package/contracts/registry/ChainNft.sol +15 -0
  383. package/contracts/registry/IRegistry.sol +85 -32
  384. package/contracts/registry/IRegistryService.sol +47 -28
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +376 -248
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +111 -217
  389. package/contracts/registry/RegistryServiceManager.sol +26 -53
  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 +261 -57
  394. package/contracts/shared/Component.sol +280 -0
  395. package/contracts/shared/ComponentService.sol +651 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/shared/IComponent.sol +70 -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 +16 -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 +58 -31
  419. package/contracts/shared/TokenHandler.sol +37 -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 +411 -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 +21 -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 +81 -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 +23 -14
  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/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  510. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  511. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  512. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  513. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  514. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -775
  515. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  516. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  517. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  518. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  519. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  520. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -272
  521. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  522. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  524. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  525. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  528. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  529. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  530. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  531. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  534. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  536. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  538. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  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/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1049
  544. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -464
  546. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1147
  548. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -488
  550. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  551. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  552. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  553. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  554. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  555. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  556. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  558. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  559. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  560. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  561. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  562. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  563. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  564. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  565. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  566. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  568. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  570. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  572. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  573. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  574. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  575. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  576. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  577. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  578. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  579. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  580. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  581. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  582. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  584. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  586. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  588. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  590. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  591. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  592. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  594. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  595. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  596. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  598. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  600. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  602. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  604. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  606. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  609. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  611. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  612. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  613. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  615. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  616. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  617. package/contracts/components/BaseComponent.sol +0 -129
  618. package/contracts/components/Distribution.sol +0 -163
  619. package/contracts/components/IBaseComponent.sol +0 -31
  620. package/contracts/components/IDistributionComponent.sol +0 -44
  621. package/contracts/components/IPoolComponent.sol +0 -66
  622. package/contracts/components/IProductComponent.sol +0 -35
  623. package/contracts/components/Pool.sol +0 -267
  624. package/contracts/components/Product.sol +0 -289
  625. package/contracts/experiment/cloning/Cloner.sol +0 -47
  626. package/contracts/experiment/errors/Require.sol +0 -38
  627. package/contracts/experiment/errors/Revert.sol +0 -44
  628. package/contracts/experiment/inheritance/A.sol +0 -53
  629. package/contracts/experiment/inheritance/B.sol +0 -28
  630. package/contracts/experiment/inheritance/C.sol +0 -34
  631. package/contracts/experiment/inheritance/IA.sol +0 -13
  632. package/contracts/experiment/inheritance/IB.sol +0 -10
  633. package/contracts/experiment/inheritance/IC.sol +0 -12
  634. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  635. package/contracts/experiment/statemachine/ISM.sol +0 -25
  636. package/contracts/experiment/statemachine/SM.sol +0 -57
  637. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  638. package/contracts/experiment/types/TypeA.sol +0 -47
  639. package/contracts/experiment/types/TypeB.sol +0 -29
  640. package/contracts/instance/AccessManagedSimple.sol +0 -115
  641. package/contracts/instance/AccessManagerSimple.sol +0 -692
  642. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  643. package/contracts/instance/InstanceAccessManager.sol +0 -288
  644. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  645. package/contracts/instance/base/IInstanceBase.sol +0 -23
  646. package/contracts/instance/base/KeyValueStore.sol +0 -172
  647. package/contracts/instance/base/Lifecycle.sol +0 -100
  648. package/contracts/instance/module/ISetup.sol +0 -46
  649. package/contracts/instance/module/ITreasury.sol +0 -23
  650. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  651. package/contracts/instance/service/DistributionService.sol +0 -88
  652. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  653. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  654. package/contracts/instance/service/IDistributionService.sol +0 -12
  655. package/contracts/instance/service/IPoolService.sol +0 -51
  656. package/contracts/instance/service/IProductService.sol +0 -110
  657. package/contracts/instance/service/PoolService.sol +0 -287
  658. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  659. package/contracts/instance/service/ProductService.sol +0 -570
  660. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  661. package/contracts/shared/ContractDeployerLib.sol +0 -72
  662. package/contracts/shared/ERC165.sol +0 -25
  663. package/contracts/shared/ProxyManager.sol +0 -94
  664. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  665. package/contracts/shared/Versionable.sol +0 -147
  666. package/contracts/test/TestFee.sol +0 -25
  667. package/contracts/test/TestRegisterable.sol +0 -18
  668. package/contracts/test/TestRoleId.sol +0 -14
  669. package/contracts/test/TestService.sol +0 -24
  670. package/contracts/test/TestToken.sol +0 -26
  671. package/contracts/test/TestVersion.sol +0 -44
  672. package/contracts/test/TestVersionable.sol +0 -17
  673. package/contracts/types/ChainId.sol +0 -38
  674. package/contracts/types/NumberId.sol +0 -52
  675. package/contracts/types/ObjectType.sol +0 -152
  676. package/contracts/types/RoleId.sol +0 -90
  677. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,434 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IBundleService} from "./IBundleService.sol";
5
+ import {IComponents} from "../instance/module/IComponents.sol";
6
+ import {IComponentService} from "../shared/IComponentService.sol";
7
+ import {IInstance} from "../instance/IInstance.sol";
8
+ import {IInstanceService} from "../instance/IInstanceService.sol";
9
+ import {IPolicy} from "../instance/module/IPolicy.sol";
10
+ import {IPoolService} from "./IPoolService.sol";
11
+ import {IRegistry} from "../registry/IRegistry.sol";
12
+ import {IRegistryService} from "../registry/IRegistryService.sol";
13
+ import {IStaking} from "../staking/IStaking.sol";
14
+
15
+ import {Amount, AmountLib} from "../type/Amount.sol";
16
+ import {Fee, FeeLib} from "../type/Fee.sol";
17
+ import {NftId, NftIdLib} from "../type/NftId.sol";
18
+ import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
19
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
20
+ import {Fee, FeeLib} from "../type/Fee.sol";
21
+ import {KEEP_STATE} from "../type/StateId.sol";
22
+ import {Seconds} from "../type/Seconds.sol";
23
+ import {TokenHandler} from "../shared/TokenHandler.sol";
24
+ import {UFixed} from "../type/UFixed.sol";
25
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
26
+ import {InstanceReader} from "../instance/InstanceReader.sol";
27
+ import {InstanceStore} from "../instance/InstanceStore.sol";
28
+
29
+ string constant POOL_SERVICE_NAME = "PoolService";
30
+
31
+ contract PoolService is
32
+ ComponentVerifyingService,
33
+ IPoolService
34
+ {
35
+ IBundleService internal _bundleService;
36
+ IComponentService internal _componentService;
37
+ IInstanceService private _instanceService;
38
+ IRegistryService private _registryService;
39
+
40
+ IStaking private _staking;
41
+
42
+ function _initialize(
43
+ address owner,
44
+ bytes memory data
45
+ )
46
+ internal
47
+ initializer
48
+ virtual override
49
+ {
50
+ (
51
+ address registryAddress,,
52
+ //address managerAddress
53
+ address authority
54
+ ) = abi.decode(data, (address, address, address));
55
+
56
+ initializeService(registryAddress, authority, owner);
57
+
58
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
59
+ _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
60
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
61
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
62
+
63
+ _staking = IStaking(getRegistry().getStakingAddress());
64
+
65
+ registerInterface(type(IPoolService).interfaceId);
66
+ }
67
+
68
+
69
+ function setMaxCapitalAmount(Amount maxCapitalAmount)
70
+ external
71
+ virtual
72
+ {
73
+ /*
74
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
75
+ InstanceReader instanceReader = instance.getInstanceReader();
76
+
77
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
78
+ IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
79
+ Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
80
+
81
+ poolInfo.maxCapitalAmount = maxCapitalAmount;
82
+ instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
83
+
84
+ emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
85
+ */
86
+ }
87
+
88
+ function setBundleOwnerRole(RoleId bundleOwnerRole)
89
+ external
90
+ virtual
91
+ {
92
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
93
+ InstanceReader instanceReader = instance.getInstanceReader();
94
+
95
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
96
+ IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
97
+
98
+ // bundle owner role may only be set once per pool
99
+ if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
100
+ revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
101
+ }
102
+
103
+ poolInfo.bundleOwnerRole = bundleOwnerRole;
104
+ instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
105
+
106
+ emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
107
+ }
108
+
109
+
110
+ function setFees(
111
+ Fee memory poolFee,
112
+ Fee memory stakingFee,
113
+ Fee memory performanceFee
114
+ )
115
+ external
116
+ virtual
117
+ {
118
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
119
+
120
+ IComponents.PoolInfo memory poolInfo = instance.getInstanceReader().getPoolInfo(poolNftId);
121
+ poolInfo.poolFee = poolFee;
122
+ poolInfo.stakingFee = stakingFee;
123
+ poolInfo.performanceFee = performanceFee;
124
+
125
+ instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
126
+
127
+ // TODO add logging
128
+ }
129
+
130
+ function createBundle(
131
+ address bundleOwner, // initial bundle owner
132
+ Fee memory fee, // fees deducted from premium that go to bundle owner
133
+ Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
134
+ Seconds lifetime, // initial duration for which new policies are covered
135
+ bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
136
+ )
137
+ external
138
+ virtual
139
+ returns(NftId bundleNftId)
140
+ {
141
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
142
+ InstanceReader instanceReader = instance.getInstanceReader();
143
+
144
+ (
145
+ Amount stakingFeeAmount,
146
+ Amount stakingNetAmount
147
+ ) = FeeLib.calculateFee(
148
+ _getStakingFee(instanceReader, poolNftId),
149
+ stakingAmount);
150
+
151
+ bundleNftId = _bundleService.create(
152
+ instance,
153
+ poolNftId,
154
+ bundleOwner,
155
+ fee,
156
+ stakingNetAmount,
157
+ lifetime,
158
+ filter);
159
+
160
+ // pool book keeping
161
+ _componentService.increasePoolBalance(
162
+ instance.getInstanceStore(),
163
+ poolNftId,
164
+ stakingAmount,
165
+ stakingFeeAmount);
166
+
167
+ // pool bookkeeping and collect tokens from bundle owner
168
+ _collectStakingAmount(
169
+ instanceReader,
170
+ poolNftId,
171
+ bundleOwner,
172
+ stakingAmount);
173
+
174
+ emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
175
+ }
176
+
177
+ function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
178
+ internal
179
+ virtual
180
+ view
181
+ returns (Fee memory stakingFee)
182
+ {
183
+ NftId productNftId = instanceReader.getPoolInfo(poolNftId).productNftId;
184
+ return instanceReader.getPoolInfo(productNftId).stakingFee;
185
+ }
186
+
187
+ function closeBundle(NftId bundleNftId)
188
+ external
189
+ virtual
190
+ {
191
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
192
+
193
+ // TODO book keeping for pool collateral released outside of retention level
194
+
195
+ // releasing collateral in bundle
196
+ _bundleService.close(instance, bundleNftId);
197
+
198
+ // TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
199
+
200
+ emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
201
+ }
202
+
203
+
204
+ function processSale(
205
+ NftId bundleNftId,
206
+ IPolicy.Premium memory premium
207
+ )
208
+ external
209
+ virtual
210
+ restricted()
211
+ {
212
+ IRegistry registry = getRegistry();
213
+ IRegistry.ObjectInfo memory bundleObjectInfo = registry.getObjectInfo(bundleNftId);
214
+ IRegistry.ObjectInfo memory poolObjectInfo = registry.getObjectInfo(bundleObjectInfo.parentNftId);
215
+ IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
216
+ IInstance instance = IInstance(instanceObjectInfo.objectAddress);
217
+
218
+ Amount poolFeeAmount = AmountLib.toAmount(premium.poolFeeFixAmount + premium.poolFeeVarAmount);
219
+ Amount bundleFeeAmount = AmountLib.toAmount(premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
220
+ Amount bundleNetAmount = AmountLib.toAmount(premium.netPremiumAmount);
221
+
222
+ InstanceStore instanceStore = instance.getInstanceStore();
223
+ _componentService.increasePoolBalance(
224
+ instanceStore,
225
+ poolObjectInfo.nftId,
226
+ bundleNetAmount + bundleFeeAmount,
227
+ poolFeeAmount);
228
+
229
+ _componentService.increaseBundleBalance(
230
+ instanceStore,
231
+ bundleObjectInfo.nftId,
232
+ bundleNetAmount,
233
+ bundleFeeAmount);
234
+ }
235
+
236
+
237
+ function lockCollateral(
238
+ IInstance instance,
239
+ address token,
240
+ NftId productNftId,
241
+ NftId applicationNftId,
242
+ NftId bundleNftId,
243
+ Amount sumInsuredAmount // premium amount after product and distribution fees
244
+ )
245
+ external
246
+ virtual
247
+ restricted()
248
+ returns (
249
+ Amount localCollateralAmount,
250
+ Amount totalCollateralAmount
251
+ )
252
+ {
253
+ (
254
+ localCollateralAmount,
255
+ totalCollateralAmount
256
+ ) = calculateRequiredCollateral(
257
+ instance.getInstanceReader(),
258
+ productNftId,
259
+ sumInsuredAmount);
260
+
261
+ // lock collateral amount from involved bundle
262
+ _bundleService.lockCollateral(
263
+ instance,
264
+ applicationNftId,
265
+ bundleNftId,
266
+ localCollateralAmount);
267
+
268
+ // update value locked with staking service
269
+ _staking.increaseTotalValueLocked(
270
+ instance.getNftId(),
271
+ token,
272
+ totalCollateralAmount);
273
+
274
+ // hierarhical riskpool setup
275
+ // TODO loop in with pool component to guarantee availability of external capital
276
+ if(totalCollateralAmount > localCollateralAmount) {
277
+
278
+ }
279
+ }
280
+
281
+
282
+ function reduceCollateral(
283
+ IInstance instance,
284
+ address token,
285
+ NftId policyNftId,
286
+ IPolicy.PolicyInfo memory policyInfo,
287
+ Amount payoutAmount
288
+ )
289
+ external
290
+ virtual
291
+ restricted()
292
+ {
293
+ _bundleService.releaseCollateral(
294
+ instance,
295
+ policyNftId,
296
+ policyInfo.bundleNftId,
297
+ payoutAmount);
298
+
299
+ // update value locked with staking service
300
+ _staking.decreaseTotalValueLocked(
301
+ instance.getNftId(),
302
+ token,
303
+ payoutAmount);
304
+ }
305
+
306
+
307
+ /// @dev releases the remaining collateral linked to the specified policy
308
+ /// may only be called by the policy service for unlocked pool components
309
+ function releaseCollateral(
310
+ IInstance instance,
311
+ address token,
312
+ NftId policyNftId,
313
+ IPolicy.PolicyInfo memory policyInfo
314
+ )
315
+ external
316
+ virtual
317
+ restricted()
318
+ {
319
+ Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
320
+
321
+ _bundleService.releaseCollateral(
322
+ instance,
323
+ policyNftId,
324
+ policyInfo.bundleNftId,
325
+ remainingCollateralAmount);
326
+
327
+ _bundleService.unlinkPolicy(
328
+ instance,
329
+ policyNftId);
330
+
331
+ // update value locked with staking service
332
+ _staking.decreaseTotalValueLocked(
333
+ instance.getNftId(),
334
+ token,
335
+ remainingCollateralAmount);
336
+ }
337
+
338
+
339
+ function calculateRequiredCollateral(
340
+ InstanceReader instanceReader,
341
+ NftId productNftId,
342
+ Amount sumInsuredAmount
343
+ )
344
+ public
345
+ view
346
+ returns(
347
+ Amount localCollateralAmount,
348
+ Amount totalCollateralAmount
349
+ )
350
+ {
351
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
352
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
353
+
354
+ (
355
+ localCollateralAmount,
356
+ totalCollateralAmount
357
+ ) = calculateRequiredCollateral(
358
+ poolInfo.collateralizationLevel,
359
+ poolInfo.retentionLevel,
360
+ sumInsuredAmount);
361
+ }
362
+
363
+
364
+ function calculateRequiredCollateral(
365
+ UFixed collateralizationLevel,
366
+ UFixed retentionLevel,
367
+ Amount sumInsuredAmount
368
+ )
369
+ public
370
+ pure
371
+ returns(
372
+ Amount localCollateralAmount,
373
+ Amount totalCollateralAmount
374
+ )
375
+ {
376
+ // TODO define if only applies to local collateral
377
+ // TODO add minimalistic implementation
378
+
379
+ // assumptions
380
+ // - collateralizationLevel == 1.0
381
+ // - retentionLevel == 1.0
382
+ localCollateralAmount = sumInsuredAmount;
383
+ totalCollateralAmount = localCollateralAmount;
384
+ }
385
+
386
+
387
+ function _processStakingFees(
388
+ Fee memory stakingFee,
389
+ Amount stakingAmount
390
+ )
391
+ internal
392
+ returns (Amount stakingNetAmount)
393
+ {
394
+ stakingNetAmount = stakingAmount;
395
+
396
+ // check if any staking fees apply
397
+ if (FeeLib.gtz(stakingFee)) {
398
+ (Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
399
+ stakingNetAmount = netAmount;
400
+
401
+ // TODO update fee balance for pool
402
+ }
403
+ }
404
+
405
+
406
+ // TODO create (I)TreasuryService that deals with all gif related token transfers
407
+ /// @dev transfers the specified amount from the bundle owner to the pool's wallet
408
+ function _collectStakingAmount(
409
+ InstanceReader instanceReader,
410
+ NftId poolNftId,
411
+ address bundleOwner,
412
+ Amount amount
413
+ )
414
+ internal
415
+ {
416
+
417
+ // collecting investor token
418
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
419
+ TokenHandler tokenHandler = componentInfo.tokenHandler;
420
+ address poolWallet = componentInfo.wallet;
421
+
422
+ if(amount.gtz()) {
423
+ // TODO: centralize token handling (issue #471)
424
+ tokenHandler.transfer(
425
+ bundleOwner,
426
+ poolWallet,
427
+ amount);
428
+ }
429
+ }
430
+
431
+ function _getDomain() internal pure override returns(ObjectType) {
432
+ return POOL();
433
+ }
434
+ }
@@ -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
+ }
@@ -0,0 +1,230 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IApplicationService} from "./IApplicationService.sol";
5
+ import {IComponents} from "../instance/module/IComponents.sol";
6
+ import {IInstance} from "../instance/IInstance.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IPolicy} from "../instance/module/IPolicy.sol";
9
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
10
+ import {IPricingService} from "./IPricingService.sol";
11
+ import {IRegistryService} from "../registry/IRegistryService.sol";
12
+
13
+ import {AmountLib} from "../type/Amount.sol";
14
+ import {Seconds} from "../type/Seconds.sol";
15
+ import {zeroTimestamp} from "../type/Timestamp.sol";
16
+ import {ObjectType, DISTRIBUTION, PRODUCT, REGISTRY, APPLICATION, POLICY, PRICE} from "../type/ObjectType.sol";
17
+ import {REVOKED} from "../type/StateId.sol";
18
+ import {NftId, NftIdLib} from "../type/NftId.sol";
19
+ import {ReferralId} from "../type/Referral.sol";
20
+ import {RiskId} from "../type/RiskId.sol";
21
+ import {Amount, AmountLib} from "../type/Amount.sol";
22
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
23
+ import {InstanceReader} from "../instance/InstanceReader.sol";
24
+
25
+
26
+
27
+ contract ApplicationService is
28
+ ComponentVerifyingService,
29
+ IApplicationService
30
+ {
31
+ IDistributionService private _distributionService;
32
+ IPricingService private _pricingService;
33
+ IRegistryService private _registryService;
34
+
35
+ function _initialize(
36
+ address owner,
37
+ bytes memory data
38
+ )
39
+ internal
40
+ virtual override
41
+ initializer()
42
+ {
43
+ (
44
+ address registryAddress,,
45
+ //address managerAddress
46
+ address authority
47
+ ) = abi.decode(data, (address, address, address));
48
+
49
+ initializeService(registryAddress, address(0), owner);
50
+
51
+ _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
52
+ _pricingService = IPricingService(_getServiceAddress(PRICE()));
53
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
54
+
55
+ registerInterface(type(IApplicationService).interfaceId);
56
+ }
57
+
58
+
59
+ function _checkLinkedpplicationParameters(
60
+ InstanceReader instanceReader,
61
+ NftId productNftId,
62
+ RiskId rirskId,
63
+ ReferralId referralId,
64
+ NftId bundleNftId
65
+ )
66
+ internal
67
+ virtual
68
+ view
69
+ {
70
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
71
+
72
+ // TODO check riskId with product
73
+
74
+ // TODO check referral with distribution
75
+
76
+ // check bundle with pool
77
+ NftId productPoolNftId = productInfo.poolNftId;
78
+ NftId bundlePoolNftId = instanceReader.getBundleInfo(bundleNftId).poolNftId;
79
+ if(bundlePoolNftId != productPoolNftId) {
80
+ revert ErrorApplicationServiceBundlePoolMismatch(bundleNftId, productPoolNftId, bundlePoolNftId);
81
+ }
82
+ }
83
+
84
+
85
+ function _registerApplication(
86
+ NftId productNftId,
87
+ address applicationOwner
88
+ )
89
+ internal
90
+ virtual
91
+ returns (NftId applicationNftId)
92
+ {
93
+ IRegistry.ObjectInfo memory objectInfo = IRegistry.ObjectInfo(
94
+ NftIdLib.zero(),
95
+ productNftId,
96
+ POLICY(),
97
+ false, // intercepting property for policies is defined on product
98
+ address(0),
99
+ applicationOwner,
100
+ "");
101
+
102
+ applicationNftId = _registryService.registerPolicy(objectInfo);
103
+ }
104
+
105
+
106
+ function _calculatePremiumAmount(
107
+ IPolicy.PolicyInfo memory info
108
+ )
109
+ internal
110
+ virtual
111
+ view
112
+ returns (Amount premiumAmount)
113
+ {
114
+ return AmountLib.toAmount(
115
+ _pricingService.calculatePremium(
116
+ info.productNftId,
117
+ info.riskId,
118
+ info.sumInsuredAmount,
119
+ info.lifetime,
120
+ info.applicationData,
121
+ info.bundleNftId,
122
+ info.referralId
123
+ ).premiumAmount);
124
+ }
125
+
126
+
127
+ function create(
128
+ address applicationOwner,
129
+ RiskId riskId,
130
+ Amount sumInsuredAmount,
131
+ Seconds lifetime,
132
+ NftId bundleNftId,
133
+ ReferralId referralId,
134
+ bytes memory applicationData
135
+ )
136
+ external
137
+ virtual
138
+ returns (NftId applicationNftId)
139
+ {
140
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
141
+
142
+ // check if provided references are valid and linked to calling product contract
143
+ InstanceReader instanceReader = instance.getInstanceReader();
144
+ _checkLinkedpplicationParameters(
145
+ instanceReader,
146
+ productNftId,
147
+ riskId,
148
+ referralId,
149
+ bundleNftId);
150
+
151
+ // register application with registry
152
+ applicationNftId = _registerApplication(productNftId, applicationOwner);
153
+
154
+ // create policy info for application
155
+ IPolicy.PolicyInfo memory applicationInfo = IPolicy.PolicyInfo({
156
+ productNftId: productNftId,
157
+ bundleNftId: bundleNftId,
158
+ referralId: referralId,
159
+ riskId: riskId,
160
+ sumInsuredAmount: sumInsuredAmount,
161
+ premiumAmount: AmountLib.zero(),
162
+ premiumPaidAmount: AmountLib.zero(),
163
+ lifetime: lifetime,
164
+ applicationData: applicationData,
165
+ processData: "",
166
+ claimsCount: 0,
167
+ openClaimsCount: 0,
168
+ claimAmount: AmountLib.zero(),
169
+ payoutAmount: AmountLib.zero(),
170
+ activatedAt: zeroTimestamp(),
171
+ expiredAt: zeroTimestamp(),
172
+ closedAt: zeroTimestamp()
173
+ });
174
+
175
+ // TODO consider to provide this amount externally
176
+ // actual calculation is done 2nd time anyway for premium collection
177
+ // calculate premium amount
178
+ applicationInfo.premiumAmount = _calculatePremiumAmount(applicationInfo);
179
+
180
+ // register application with instance
181
+ instance.getInstanceStore().createApplication(
182
+ applicationNftId,
183
+ applicationInfo);
184
+
185
+ // TODO: add logging
186
+ }
187
+
188
+
189
+ function renew(
190
+ NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
191
+ NftId bundleNftId // will likely need a newer bundle for underwriting
192
+ )
193
+ external
194
+ virtual override
195
+ returns (NftId applicationNftId)
196
+ {
197
+
198
+ }
199
+
200
+
201
+ function adjust(
202
+ NftId applicationNftId,
203
+ RiskId riskId,
204
+ NftId bundleNftId,
205
+ ReferralId referralId,
206
+ Amount sumInsuredAmount,
207
+ Seconds lifetime,
208
+ bytes memory applicationData
209
+ )
210
+ external
211
+ virtual override
212
+ {
213
+
214
+ }
215
+
216
+ function revoke(NftId applicationNftId)
217
+ external
218
+ virtual override
219
+ {
220
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
221
+ instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());
222
+ }
223
+
224
+ // internal functions
225
+
226
+
227
+ function _getDomain() internal pure override returns(ObjectType) {
228
+ return APPLICATION();
229
+ }
230
+ }