@etherisc/gif-next 0.0.2-fbe22f0-239 → 0.0.2-fbe6493-116

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 (678) hide show
  1. package/README.md +54 -88
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1518 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +402 -320
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1557 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +854 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +943 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +914 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +235 -1578
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +364 -198
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +431 -2703
  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 +676 -369
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +466 -470
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +271 -121
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3469 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → oracle/IOracleService.sol/IOracleService.json} +276 -329
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1055 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +507 -402
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1521 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +830 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +479 -357
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +401 -336
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1213 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1218 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1683 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +774 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +852 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1280 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +834 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +128 -236
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +788 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +339 -310
  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} +264 -214
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +422 -237
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +120 -166
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1355 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +806 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/{components → product}/Product.sol/Product.json +412 -425
  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 +191 -18
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +220 -266
  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 +453 -34
  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 +423 -296
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +255 -109
  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 +308 -152
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +234 -234
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1751 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +824 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +224 -221
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +232 -108
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +248 -206
  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 +11 -31
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +11 -31
  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 +79 -154
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +977 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -54
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +161 -13
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +41 -77
  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 +102 -196
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +107 -6
  226. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +42 -0
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  230. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  232. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  234. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  235. package/artifacts/contracts/staking/Staking.sol/Staking.json +1991 -0
  236. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  238. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +773 -0
  240. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  242. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  244. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  246. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  248. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  250. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  252. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  254. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  256. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  258. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  260. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  262. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  264. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  266. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  268. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  270. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  272. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  274. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  276. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  278. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  280. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  286. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  288. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  292. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  294. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  296. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  300. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  302. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  304. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  306. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  307. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  308. package/contracts/authorization/AccessAdmin.sol +591 -0
  309. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  310. package/contracts/authorization/Authorization.sol +218 -0
  311. package/contracts/authorization/IAccess.sol +48 -0
  312. package/contracts/authorization/IAccessAdmin.sol +136 -0
  313. package/contracts/authorization/IAuthorization.sol +54 -0
  314. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  315. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  316. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  317. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  318. package/contracts/distribution/BasicDistribution.sol +138 -0
  319. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  320. package/contracts/distribution/Distribution.sol +295 -0
  321. package/contracts/distribution/DistributionService.sol +323 -0
  322. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  323. package/contracts/distribution/IDistributionComponent.sol +52 -0
  324. package/contracts/distribution/IDistributionService.sol +95 -0
  325. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +33 -32
  326. package/contracts/instance/IInstance.sol +61 -47
  327. package/contracts/instance/IInstanceService.sol +72 -21
  328. package/contracts/instance/Instance.sol +177 -191
  329. package/contracts/instance/InstanceAdmin.sol +266 -0
  330. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  331. package/contracts/instance/InstanceReader.sol +180 -65
  332. package/contracts/instance/InstanceService.sol +350 -317
  333. package/contracts/instance/InstanceServiceManager.sol +13 -27
  334. package/contracts/instance/InstanceStore.sol +277 -0
  335. package/contracts/instance/base/BalanceStore.sol +123 -0
  336. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  337. package/contracts/instance/base/ObjectCounter.sol +21 -0
  338. package/contracts/instance/base/ObjectLifecycle.sol +105 -0
  339. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
  340. package/contracts/instance/module/IAccess.sol +19 -20
  341. package/contracts/instance/module/IBundle.sol +8 -8
  342. package/contracts/instance/module/{ISetup.sol → IComponents.sol} +21 -22
  343. package/contracts/instance/module/IDistribution.sol +6 -4
  344. package/contracts/instance/module/IPolicy.sol +56 -17
  345. package/contracts/instance/module/IRisk.sol +1 -1
  346. package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
  347. package/contracts/oracle/BasicOracle.sol +48 -0
  348. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  349. package/contracts/oracle/IOracle.sol +36 -0
  350. package/contracts/oracle/IOracleComponent.sol +33 -0
  351. package/contracts/oracle/IOracleService.sol +65 -0
  352. package/contracts/oracle/Oracle.sol +166 -0
  353. package/contracts/oracle/OracleService.sol +278 -0
  354. package/contracts/oracle/OracleServiceManager.sol +39 -0
  355. package/contracts/pool/BasicPool.sol +166 -0
  356. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  357. package/contracts/pool/BundleService.sol +437 -0
  358. package/contracts/pool/BundleServiceManager.sol +39 -0
  359. package/contracts/pool/IBundleService.sol +133 -0
  360. package/contracts/pool/IPoolComponent.sol +58 -0
  361. package/contracts/pool/IPoolService.sol +150 -0
  362. package/contracts/pool/Pool.sol +328 -0
  363. package/contracts/pool/PoolService.sol +528 -0
  364. package/contracts/pool/PoolServiceManager.sol +39 -0
  365. package/contracts/product/ApplicationService.sol +250 -0
  366. package/contracts/product/ApplicationServiceManager.sol +38 -0
  367. package/contracts/product/BasicProduct.sol +52 -0
  368. package/contracts/product/BasicProductAuthorization.sol +43 -0
  369. package/contracts/product/ClaimService.sol +417 -0
  370. package/contracts/product/ClaimServiceManager.sol +38 -0
  371. package/contracts/{instance/service → product}/IApplicationService.sol +18 -37
  372. package/contracts/product/IClaimService.sol +100 -0
  373. package/contracts/product/IPolicyService.sol +84 -0
  374. package/contracts/product/IPricingService.sol +39 -0
  375. package/contracts/product/IProductComponent.sol +40 -0
  376. package/contracts/product/IProductService.sol +33 -0
  377. package/contracts/product/PolicyService.sol +595 -0
  378. package/contracts/product/PolicyServiceManager.sol +39 -0
  379. package/contracts/product/PricingService.sol +304 -0
  380. package/contracts/product/PricingServiceManager.sol +39 -0
  381. package/contracts/product/Product.sol +413 -0
  382. package/contracts/product/ProductService.sol +99 -0
  383. package/contracts/product/ProductServiceManager.sol +39 -0
  384. package/contracts/registry/ChainNft.sol +16 -1
  385. package/contracts/registry/IRegistry.sol +61 -26
  386. package/contracts/registry/IRegistryService.sol +47 -43
  387. package/contracts/registry/ITransferInterceptor.sol +1 -0
  388. package/contracts/registry/Registry.sol +252 -138
  389. package/contracts/registry/RegistryAdmin.sol +365 -0
  390. package/contracts/registry/RegistryService.sol +98 -107
  391. package/contracts/registry/RegistryServiceManager.sol +24 -33
  392. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  393. package/contracts/registry/ReleaseRegistry.sol +485 -0
  394. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  395. package/contracts/registry/TokenRegistry.sol +262 -60
  396. package/contracts/shared/Component.sol +281 -0
  397. package/contracts/shared/ComponentService.sol +640 -0
  398. package/contracts/shared/ComponentServiceManager.sol +35 -0
  399. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  400. package/contracts/shared/IComponent.sol +71 -0
  401. package/contracts/shared/IComponentService.sol +108 -0
  402. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  403. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  404. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  405. package/contracts/shared/INftOwnable.sol +9 -13
  406. package/contracts/shared/IPolicyHolder.sol +29 -10
  407. package/contracts/shared/IRegistryLinked.sol +11 -0
  408. package/contracts/shared/IService.sol +15 -6
  409. package/contracts/shared/InitializableCustom.sol +177 -0
  410. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -3
  411. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  412. package/contracts/shared/KeyValueStore.sol +131 -0
  413. package/contracts/shared/Lifecycle.sol +77 -0
  414. package/contracts/shared/NftIdSet.sol +65 -0
  415. package/contracts/shared/NftOwnable.sol +18 -98
  416. package/contracts/shared/PolicyHolder.sol +63 -16
  417. package/contracts/shared/Registerable.sol +15 -21
  418. package/contracts/shared/RegistryLinked.sol +43 -0
  419. package/contracts/shared/Service.sol +52 -30
  420. package/contracts/shared/TokenHandler.sol +41 -6
  421. package/contracts/shared/TokenTransferLib.sol +60 -0
  422. package/contracts/staking/IStaking.sol +167 -0
  423. package/contracts/staking/IStakingService.sol +160 -0
  424. package/contracts/staking/StakeManagerLib.sol +231 -0
  425. package/contracts/staking/Staking.sol +516 -0
  426. package/contracts/staking/StakingLifecycle.sol +23 -0
  427. package/contracts/staking/StakingManager.sol +50 -0
  428. package/contracts/staking/StakingReader.sol +183 -0
  429. package/contracts/staking/StakingService.sol +407 -0
  430. package/contracts/staking/StakingServiceManager.sol +44 -0
  431. package/contracts/staking/StakingStore.sol +605 -0
  432. package/contracts/staking/TargetManagerLib.sol +207 -0
  433. package/contracts/{types → type}/AddressSet.sol +1 -1
  434. package/contracts/type/Amount.sol +135 -0
  435. package/contracts/{types → type}/Blocknumber.sol +27 -3
  436. package/contracts/type/ClaimId.sol +75 -0
  437. package/contracts/{types → type}/DistributorType.sol +2 -2
  438. package/contracts/{types → type}/Fee.sol +33 -23
  439. package/contracts/{types → type}/NftId.sol +21 -15
  440. package/contracts/{types → type}/NftIdSet.sol +2 -2
  441. package/contracts/type/ObjectType.sol +271 -0
  442. package/contracts/type/PayoutId.sol +82 -0
  443. package/contracts/{types → type}/Referral.sol +6 -1
  444. package/contracts/type/RequestId.sol +75 -0
  445. package/contracts/{types → type}/RiskId.sol +1 -1
  446. package/contracts/type/RoleId.sol +174 -0
  447. package/contracts/type/Seconds.sol +93 -0
  448. package/contracts/type/Selector.sol +102 -0
  449. package/contracts/{types → type}/StateId.sol +34 -4
  450. package/contracts/type/String.sol +53 -0
  451. package/contracts/{types → type}/Timestamp.sol +34 -15
  452. package/contracts/{types → type}/UFixed.sol +35 -9
  453. package/contracts/{types → type}/Version.sol +5 -2
  454. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  455. package/contracts/upgradeability/ProxyManager.sol +198 -0
  456. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  457. package/contracts/upgradeability/Versionable.sol +59 -0
  458. package/package.json +8 -5
  459. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  460. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  461. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  462. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  463. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  464. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  465. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  466. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  469. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  473. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  475. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  477. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  479. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  481. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  483. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  485. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  487. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  490. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  492. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  494. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  497. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  499. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  501. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  503. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  505. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  506. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  507. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  508. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  509. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  510. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  511. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  512. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  516. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  517. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  518. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  519. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  520. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  522. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1091
  523. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  524. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1292
  525. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  526. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -560
  527. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  528. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -897
  529. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -548
  531. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1352
  539. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -616
  541. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -931
  543. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -548
  545. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  546. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -981
  547. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  548. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -548
  549. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  550. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  551. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  552. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  553. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  554. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  555. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  556. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  557. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  558. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  559. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  560. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -473
  561. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  562. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  563. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  564. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  565. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  566. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  567. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  568. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -420
  569. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  570. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  571. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  572. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -733
  573. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  574. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  575. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  576. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  577. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  578. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  579. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  580. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  581. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  582. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  583. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  585. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  587. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  588. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  589. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  590. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  591. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  592. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  593. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  594. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  595. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  596. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  597. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  598. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  599. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  601. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  603. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  605. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  607. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  610. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  612. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  614. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  616. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  618. package/contracts/components/Component.sol +0 -230
  619. package/contracts/components/Distribution.sol +0 -156
  620. package/contracts/components/IComponent.sol +0 -50
  621. package/contracts/components/IDistributionComponent.sol +0 -47
  622. package/contracts/components/IPoolComponent.sol +0 -87
  623. package/contracts/components/IProductComponent.sol +0 -39
  624. package/contracts/components/Pool.sol +0 -254
  625. package/contracts/components/Product.sol +0 -278
  626. package/contracts/experiment/cloning/Cloner.sol +0 -47
  627. package/contracts/experiment/errors/Require.sol +0 -38
  628. package/contracts/experiment/errors/Revert.sol +0 -44
  629. package/contracts/experiment/inheritance/A.sol +0 -53
  630. package/contracts/experiment/inheritance/B.sol +0 -28
  631. package/contracts/experiment/inheritance/C.sol +0 -34
  632. package/contracts/experiment/inheritance/IA.sol +0 -13
  633. package/contracts/experiment/inheritance/IB.sol +0 -10
  634. package/contracts/experiment/inheritance/IC.sol +0 -12
  635. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  636. package/contracts/experiment/statemachine/ISM.sol +0 -25
  637. package/contracts/experiment/statemachine/SM.sol +0 -57
  638. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  639. package/contracts/experiment/types/TypeA.sol +0 -47
  640. package/contracts/experiment/types/TypeB.sol +0 -29
  641. package/contracts/instance/InstanceAccessManager.sol +0 -297
  642. package/contracts/instance/base/ComponentService.sol +0 -134
  643. package/contracts/instance/base/KeyValueStore.sol +0 -172
  644. package/contracts/instance/base/Lifecycle.sol +0 -100
  645. package/contracts/instance/module/ITreasury.sol +0 -23
  646. package/contracts/instance/service/ApplicationService.sol +0 -268
  647. package/contracts/instance/service/BundleService.sol +0 -298
  648. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  649. package/contracts/instance/service/DistributionService.sol +0 -105
  650. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  651. package/contracts/instance/service/IBundleService.sol +0 -54
  652. package/contracts/instance/service/IDistributionService.sol +0 -12
  653. package/contracts/instance/service/IPolicyService.sol +0 -88
  654. package/contracts/instance/service/IPoolService.sol +0 -20
  655. package/contracts/instance/service/IProductService.sol +0 -40
  656. package/contracts/instance/service/PolicyService.sol +0 -524
  657. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  658. package/contracts/instance/service/PoolService.sol +0 -109
  659. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  660. package/contracts/instance/service/ProductService.sol +0 -233
  661. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  662. package/contracts/registry/RegistryAccessManager.sol +0 -216
  663. package/contracts/registry/ReleaseManager.sol +0 -332
  664. package/contracts/shared/ContractDeployerLib.sol +0 -72
  665. package/contracts/shared/ProxyManager.sol +0 -95
  666. package/contracts/shared/Versionable.sol +0 -148
  667. package/contracts/test/TestFee.sol +0 -25
  668. package/contracts/test/TestRegisterable.sol +0 -18
  669. package/contracts/test/TestRoleId.sol +0 -14
  670. package/contracts/test/TestService.sol +0 -25
  671. package/contracts/test/TestVersion.sol +0 -44
  672. package/contracts/test/TestVersionable.sol +0 -17
  673. package/contracts/test/Usdc.sol +0 -26
  674. package/contracts/types/ChainId.sol +0 -38
  675. package/contracts/types/NumberId.sol +0 -52
  676. package/contracts/types/ObjectType.sol +0 -156
  677. package/contracts/types/RoleId.sol +0 -90
  678. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,150 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {Fee} from "../type/Fee.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {PayoutId} from "../type/PayoutId.sol";
8
+ import {IBundle} from "../instance/module/IBundle.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {IPolicy} from "../instance/module/IPolicy.sol";
12
+ import {IService} from "../shared/IService.sol";
13
+ import {RoleId} from "../type/RoleId.sol";
14
+ import {Seconds} from "../type/Seconds.sol";
15
+ import {StateId} from "../type/StateId.sol";
16
+ import {UFixed} from "../type/UFixed.sol";
17
+
18
+ interface IPoolService is IService {
19
+
20
+ event LogPoolServiceMaxBalanceAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
21
+ event LogPoolServiceBundleOwnerRoleSet(NftId poolNftId, RoleId bundleOwnerRole);
22
+
23
+ event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
24
+ event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
25
+
26
+ event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
27
+ event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount);
28
+
29
+ error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
30
+ error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
31
+ error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
32
+ error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
33
+ // FIXME: remove those two
34
+ error ErrorPoolServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
35
+ error ErrorPoolServiceAmountIsZero();
36
+
37
+ /// @dev defines the required role for bundle owners for the calling pool
38
+ /// default implementation returns PUBLIC ROLE
39
+ function setBundleOwnerRole(RoleId bundleOwnerRole) external;
40
+
41
+ /// @dev sets the max balance amount for the calling pool
42
+ function setMaxBalanceAmount(Amount maxBalanceAmount) external;
43
+
44
+ /// @dev locks required collateral to cover the specified application (and turn it into a policy)
45
+ /// - retention level == 1: the full collateral amount will be locked by the specified bundle
46
+ /// - retention level < 1: a part of the coverage is provided by the specified bundle, the rest by the pool component
47
+ /// in which case the pool component might hold a re-insurance policy
48
+ /// may only be called by the policy service for unlocked pool components
49
+ function lockCollateral(
50
+ IInstance instance,
51
+ address token,
52
+ NftId productNftId,
53
+ NftId applicationNftId,
54
+ NftId bundleNftId,
55
+ Amount sumInsuredAmount // premium amount after product and distribution fees
56
+ )
57
+ external
58
+ returns (
59
+ Amount localCollateralAmount,
60
+ Amount totalCollateralAmount
61
+ );
62
+
63
+
64
+ /// @dev releases the remaining collateral linked to the specified policy
65
+ /// may only be called by the policy service for unlocked pool components
66
+ function releaseCollateral(
67
+ IInstance instance,
68
+ address token,
69
+ NftId policyNftId,
70
+ IPolicy.PolicyInfo memory policyInfo
71
+ ) external;
72
+
73
+
74
+ /// @dev reduces the locked collateral in the bundle associated with the specified policy
75
+ /// every payout of a policy reduces the collateral by the payout amount
76
+ /// may only be called by the claim service for unlocked pool components
77
+ function reduceCollateral(
78
+ IInstance instance,
79
+ address token,
80
+ NftId policyNftId,
81
+ IPolicy.PolicyInfo memory policyInfo,
82
+ Amount payoutAmount
83
+ ) external;
84
+
85
+
86
+ /// @dev create a new bundle for the provided parameters
87
+ /// staking fees will be deducted by the pool service from the staking amount
88
+ /// may only be called by registered and unlocked pool components.
89
+ /// The pool balance is equal to the pool fees plus the capital of all bundles.
90
+ function createBundle(
91
+ address owner, // initial bundle owner
92
+ Fee memory fee, // fees deducted from premium that go to bundle owner
93
+ Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
94
+ Seconds lifetime, // initial duration for which new policies are covered
95
+ bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
96
+ )
97
+ external
98
+ returns(NftId bundleNftId, Amount netStakedAmount); // the nft id of the newly created bundle
99
+
100
+
101
+ /// @dev closes the specified bundle
102
+ /// only open bundles (active or locked) may be closed
103
+ /// to close a bundle it may not have any non-closed polices attached to it
104
+ /// bundle fees and remaining capital (after deduction of the performance fee) will be transferred to the bundle owner
105
+ /// may only be called by registered and unlocked pool components
106
+ function closeBundle(NftId bundleNftId) external;
107
+
108
+
109
+ /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
110
+ function processSale(NftId bundleNftId, IPolicy.Premium memory premium) external;
111
+
112
+ /// @dev increase stakes for bundle
113
+ /// staking fees will be deducted by the pool service from the staking amount
114
+ /// may only be called by registered and unlocked pool components
115
+ function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
116
+
117
+ /// @dev decrease stakes for bundle
118
+ /// performance fees will be deducted by the pool service from the staking amount
119
+ /// may only be called by registered and unlocked pool components
120
+ function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
121
+
122
+
123
+ /// @dev calulate required collateral for the provided parameters
124
+ function calculateRequiredCollateral(
125
+ InstanceReader instanceReader,
126
+ NftId productNftId,
127
+ Amount sumInsuredAmount
128
+ )
129
+ external
130
+ view
131
+ returns(
132
+ Amount localCollateralAmount,
133
+ Amount totalCollateralAmount
134
+ );
135
+
136
+
137
+ /// @dev calulate required collateral for the provided parameters
138
+ function calculateRequiredCollateral(
139
+ UFixed collateralizationLevel,
140
+ UFixed retentionLevel,
141
+ Amount sumInsuredAmount
142
+ )
143
+ external
144
+ pure
145
+ returns(
146
+ Amount localCollateralAmount,
147
+ Amount totalCollateralAmount
148
+ );
149
+
150
+ }
@@ -0,0 +1,328 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount, AmountLib} from "../type/Amount.sol";
5
+ import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
6
+ import {IBundleService} from "./IBundleService.sol";
7
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
8
+ import {IPoolComponent} from "./IPoolComponent.sol";
9
+ import {IPoolService} from "./IPoolService.sol";
10
+ import {IComponents} from "../instance/module/IComponents.sol";
11
+ import {IComponentService} from "../shared/IComponentService.sol";
12
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
13
+ import {Fee, FeeLib} from "../type/Fee.sol";
14
+ import {NftId, NftIdLib} from "../type/NftId.sol";
15
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
16
+ import {Seconds} from "../type/Seconds.sol";
17
+ import {Timestamp} from "../type/Timestamp.sol";
18
+ import {TokenHandler} from "../shared/TokenHandler.sol";
19
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
20
+
21
+ abstract contract Pool is
22
+ InstanceLinkedComponent,
23
+ IPoolComponent
24
+ {
25
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Pool")) - 1)) & ~bytes32(uint256(0xff));
26
+ bytes32 public constant POOL_STORAGE_LOCATION_V1 = 0x25e3e51823fbfffb988e0a2744bb93722d9f3e906c07cc0a9e77884c46c58300;
27
+
28
+ struct PoolStorage {
29
+ IComponentService _componentService;
30
+ IPoolService _poolService;
31
+ IBundleService _bundleService;
32
+ }
33
+
34
+
35
+ modifier onlyBundleOwner(NftId bundleNftId) {
36
+ if(msg.sender != getRegistry().ownerOf(bundleNftId)) {
37
+ revert ErrorPoolNotBundleOwner(bundleNftId, msg.sender);
38
+ }
39
+ _;
40
+ }
41
+
42
+
43
+ /// @dev see {IPoolComponent.verifyApplication}
44
+ function verifyApplication(
45
+ NftId applicationNftId,
46
+ bytes memory applicationData,
47
+ NftId bundleNftId,
48
+ bytes memory bundleFilter,
49
+ Amount collateralizationAmount
50
+ )
51
+ public
52
+ virtual
53
+ restricted()
54
+ {
55
+ if(!applicationMatchesBundle(
56
+ applicationNftId,
57
+ applicationData,
58
+ bundleNftId,
59
+ bundleFilter,
60
+ collateralizationAmount)
61
+ )
62
+ {
63
+ revert ErrorPoolApplicationBundleMismatch(applicationNftId);
64
+ }
65
+
66
+ emit LogPoolVerifiedByPool(address(this), applicationNftId, collateralizationAmount);
67
+ }
68
+
69
+
70
+ /// @dev see {IPoolComponent.applicationMatchesBundle}
71
+ /// Override this function to implement any custom application verification
72
+ /// Default implementation always returns true
73
+ function applicationMatchesBundle(
74
+ NftId applicationNftId,
75
+ bytes memory applicationData,
76
+ NftId bundleNftId,
77
+ bytes memory bundleFilter,
78
+ Amount collateralizationAmount
79
+ )
80
+ public
81
+ virtual
82
+ view
83
+ returns (bool isMatching)
84
+ {
85
+ return true;
86
+ }
87
+
88
+
89
+ function register()
90
+ external
91
+ virtual
92
+ onlyOwner()
93
+ {
94
+ _getPoolStorage()._componentService.registerPool();
95
+ _approveTokenHandler(type(uint256).max);
96
+ }
97
+
98
+ /// @inheritdoc IPoolComponent
99
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
100
+ external
101
+ virtual
102
+ restricted()
103
+ onlyBundleOwner(bundleNftId)
104
+ returns (Amount withdrawnAmount)
105
+ {
106
+ return _withdrawBundleFees(bundleNftId, amount);
107
+ }
108
+
109
+
110
+ function getInitialPoolInfo()
111
+ public
112
+ virtual
113
+ view
114
+ returns (IComponents.PoolInfo memory poolInfo)
115
+ {
116
+ return IComponents.PoolInfo(
117
+ PUBLIC_ROLE(), // bundleOwnerRole
118
+ AmountLib.max(), // maxCapitalAmount,
119
+ isNftInterceptor(), // isInterceptingBundleTransfers
120
+ false, // isExternallyManaged,
121
+ false, // isVerifyingApplications,
122
+ UFixedLib.toUFixed(1), // collateralizationLevel,
123
+ UFixedLib.toUFixed(1) // retentionLevel,
124
+ );
125
+ }
126
+
127
+ // Internals
128
+
129
+ function _initializePool(
130
+ address registry,
131
+ NftId instanceNftId,
132
+ string memory name,
133
+ address token,
134
+ IAuthorization authorization,
135
+ bool isInterceptingNftTransfers,
136
+ address initialOwner,
137
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
138
+ bytes memory componentData // component specifidc data
139
+ )
140
+ internal
141
+ virtual
142
+ onlyInitializing()
143
+ {
144
+ _initializeInstanceLinkedComponent(
145
+ registry,
146
+ instanceNftId,
147
+ name,
148
+ token,
149
+ POOL(),
150
+ authorization,
151
+ isInterceptingNftTransfers,
152
+ initialOwner,
153
+ registryData,
154
+ componentData);
155
+
156
+ PoolStorage storage $ = _getPoolStorage();
157
+ $._poolService = IPoolService(_getServiceAddress(POOL()));
158
+ $._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
159
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
160
+
161
+ registerInterface(type(IPoolComponent).interfaceId);
162
+ }
163
+
164
+ /// @dev increases the staked tokens by the specified amount
165
+ /// bundle MUST be in active or locked state
166
+ function _stake(
167
+ NftId bundleNftId,
168
+ Amount amount
169
+ )
170
+ internal
171
+ virtual
172
+ returns(Amount netAmount)
173
+ {
174
+ _getPoolStorage()._poolService.stake(bundleNftId, amount);
175
+ }
176
+
177
+
178
+ /// @dev decreases the staked tokens by the specified amount
179
+ /// bundle MUST be in active, locked or closed state
180
+ function _unstake(
181
+ NftId bundleNftId,
182
+ Amount amount
183
+ )
184
+ internal
185
+ virtual
186
+ returns(Amount netAmount)
187
+ {
188
+ return _getPoolStorage()._poolService.unstake(bundleNftId, amount);
189
+ }
190
+
191
+
192
+ /// @dev extends the bundle lifetime of the bundle by the specified time
193
+ /// bundle MUST be in active or locked state
194
+ function _extend(
195
+ NftId bundleNftId,
196
+ Seconds lifetimeExtension
197
+ )
198
+ internal
199
+ virtual
200
+ returns (Timestamp extendedExpiredAt)
201
+ {
202
+ return _getPoolStorage()._bundleService.extend(bundleNftId, lifetimeExtension);
203
+ }
204
+
205
+
206
+ /// @dev Locks the specified bundle.
207
+ /// A bundle to be locked MUST be in active state.
208
+ /// Locked bundles may not be used to collateralize any new policy.
209
+ function _lockBundle(NftId bundleNftId)
210
+ internal
211
+ virtual
212
+ {
213
+ _getPoolStorage()._bundleService.lock(bundleNftId);
214
+ }
215
+
216
+
217
+ /// @dev Unlocks the specified bundle.
218
+ /// A bundle to be unlocked MUST be in locked state.
219
+ function _unlockBundle(NftId bundleNftId)
220
+ internal
221
+ virtual
222
+ {
223
+ _getPoolStorage()._bundleService.unlock(bundleNftId);
224
+ }
225
+
226
+
227
+ /// @dev Close the specified bundle.
228
+ /// A bundle to be closed MUST be in active or locked state.
229
+ /// To close a bundle all all linked policies MUST be in closed state as well.
230
+ /// Closing a bundle finalizes the bundle bookkeeping including overall profit calculation.
231
+ /// Once a bundle is closed this action cannot be reversed.
232
+ function _closeBundle(NftId bundleNftId)
233
+ internal
234
+ virtual
235
+ {
236
+ _getPoolStorage()._poolService.closeBundle(bundleNftId);
237
+ }
238
+
239
+
240
+ /// @dev Sets the fee for the specified bundle.
241
+ /// The fee is added on top of the poolFee and deducted from the premium amounts
242
+ /// Via these fees individual bundler owner may earn income per policy in the context of peer to peer pools.
243
+ function _setBundleFee(
244
+ NftId bundleNftId,
245
+ Fee memory fee
246
+ )
247
+ internal
248
+ virtual
249
+ {
250
+ _getPoolStorage()._bundleService.setFee(bundleNftId, fee);
251
+ }
252
+
253
+
254
+ /// @dev Sets the maximum balance amound held by this pool.
255
+ /// Function may only be called by pool owner.
256
+ function _setMaxBalanceAmount(Amount maxBalanceAmount)
257
+ internal
258
+ virtual
259
+ {
260
+ _getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
261
+ }
262
+
263
+ /// @dev Sets the required role to create/own bundles.
264
+ /// May only be called once after setting up a pool.
265
+ /// May only be called by pool owner.
266
+ function _setBundleOwnerRole(RoleId bundleOwnerRole)
267
+ internal
268
+ virtual
269
+ {
270
+ _getPoolStorage()._poolService.setBundleOwnerRole(bundleOwnerRole);
271
+ }
272
+
273
+
274
+ /// @dev Update pool fees to the specified values.
275
+ /// Pool fee: are deducted from the premium amount and goes to the pool owner.
276
+ /// Staking fee: are deducted from the staked tokens by a bundle owner and goes to the pool owner.
277
+ /// Performance fee: when a bundle is closed a bundle specific profit is calculated.
278
+ /// The performance fee is deducted from this profit and goes to the pool owner.
279
+ function _setPoolFees(
280
+ Fee memory poolFee,
281
+ Fee memory stakingFee,
282
+ Fee memory performanceFee
283
+ )
284
+ internal
285
+ virtual
286
+ {
287
+ _getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
288
+ }
289
+
290
+ /// @dev Creates a new bundle using the provided parameter values.
291
+ function _createBundle(
292
+ address bundleOwner,
293
+ Fee memory fee,
294
+ Amount amount,
295
+ Seconds lifetime,
296
+ bytes memory filter
297
+ )
298
+ internal
299
+ returns(NftId bundleNftId, Amount netStakedAmount)
300
+ {
301
+ (bundleNftId, netStakedAmount) = _getPoolStorage()._poolService.createBundle(
302
+ bundleOwner,
303
+ fee,
304
+ amount,
305
+ lifetime,
306
+ filter);
307
+
308
+ // TODO add logging
309
+ }
310
+
311
+ // TODO remove function once this is no longer used to produce contract locations on the fly ...
312
+ function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
313
+ return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
314
+ }
315
+
316
+ function _withdrawBundleFees(NftId bundleNftId, Amount amount)
317
+ internal
318
+ returns (Amount withdrawnAmount)
319
+ {
320
+ return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
321
+ }
322
+
323
+ function _getPoolStorage() private pure returns (PoolStorage storage $) {
324
+ assembly {
325
+ $.slot := POOL_STORAGE_LOCATION_V1
326
+ }
327
+ }
328
+ }