@etherisc/gif-next 0.0.2-ca9d515-311 → 0.0.2-caf7ec3-284

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