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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (703) hide show
  1. package/README.md +56 -18
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +499 -549
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1518 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1196 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1557 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +854 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +943 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +945 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +265 -1337
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +423 -162
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +364 -3029
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +668 -397
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +586 -492
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +345 -171
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3469 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → oracle/IOracleService.sol/IOracleService.json} +303 -292
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1055 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1432 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1521 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +830 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +938 -0
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +946 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1213 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1218 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1700 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +798 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +852 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1280 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1339 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +826 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +216 -235
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +788 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +800 -0
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +270 -220
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +144 -112
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1276 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +782 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1238 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +351 -14
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +293 -239
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +578 -48
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +538 -281
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -82
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +360 -96
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +858 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1712 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +206 -188
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +281 -103
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +380 -312
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +60 -34
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.json +84 -159
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +977 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +88 -20
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +189 -150
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +107 -6
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  232. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  233. package/artifacts/contracts/staking/Staking.sol/Staking.json +1991 -0
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +773 -0
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  286. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  294. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  298. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  304. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  306. package/contracts/authorization/AccessAdmin.sol +591 -0
  307. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  308. package/contracts/authorization/Authorization.sol +218 -0
  309. package/contracts/authorization/IAccess.sol +48 -0
  310. package/contracts/authorization/IAccessAdmin.sol +136 -0
  311. package/contracts/authorization/IAuthorization.sol +54 -0
  312. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  313. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  314. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  316. package/contracts/distribution/BasicDistribution.sol +138 -0
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  318. package/contracts/distribution/Distribution.sol +295 -0
  319. package/contracts/distribution/DistributionService.sol +336 -0
  320. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  321. package/contracts/distribution/IDistributionComponent.sol +52 -0
  322. package/contracts/distribution/IDistributionService.sol +97 -0
  323. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +40 -43
  324. package/contracts/instance/IInstance.sol +77 -51
  325. package/contracts/instance/IInstanceService.sol +77 -19
  326. package/contracts/instance/Instance.sol +181 -391
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  329. package/contracts/instance/InstanceReader.sol +180 -87
  330. package/contracts/instance/InstanceService.sol +361 -217
  331. package/contracts/instance/InstanceServiceManager.sol +13 -31
  332. package/contracts/instance/InstanceStore.sol +277 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +105 -0
  337. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +20 -42
  338. package/contracts/instance/module/IAccess.sol +29 -21
  339. package/contracts/instance/module/IBundle.sol +8 -8
  340. package/contracts/instance/module/IComponents.sol +46 -0
  341. package/contracts/instance/module/IDistribution.sol +6 -4
  342. package/contracts/instance/module/IPolicy.sol +56 -17
  343. package/contracts/instance/module/IRisk.sol +1 -1
  344. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  345. package/contracts/oracle/BasicOracle.sol +48 -0
  346. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  347. package/contracts/oracle/IOracle.sol +36 -0
  348. package/contracts/oracle/IOracleComponent.sol +33 -0
  349. package/contracts/oracle/IOracleService.sol +65 -0
  350. package/contracts/oracle/Oracle.sol +166 -0
  351. package/contracts/oracle/OracleService.sol +278 -0
  352. package/contracts/oracle/OracleServiceManager.sol +39 -0
  353. package/contracts/pool/BasicPool.sol +166 -0
  354. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  355. package/contracts/pool/BundleService.sol +450 -0
  356. package/contracts/pool/BundleServiceManager.sol +39 -0
  357. package/contracts/pool/IBundleService.sol +135 -0
  358. package/contracts/pool/IPoolComponent.sol +58 -0
  359. package/contracts/pool/IPoolService.sol +149 -0
  360. package/contracts/pool/Pool.sol +328 -0
  361. package/contracts/pool/PoolService.sol +559 -0
  362. package/contracts/pool/PoolServiceManager.sol +39 -0
  363. package/contracts/product/ApplicationService.sol +250 -0
  364. package/contracts/product/ApplicationServiceManager.sol +38 -0
  365. package/contracts/product/BasicProduct.sol +52 -0
  366. package/contracts/product/BasicProductAuthorization.sol +43 -0
  367. package/contracts/product/ClaimService.sol +424 -0
  368. package/contracts/product/ClaimServiceManager.sol +38 -0
  369. package/contracts/product/IApplicationService.sol +63 -0
  370. package/contracts/product/IClaimService.sol +100 -0
  371. package/contracts/product/IPolicyService.sol +84 -0
  372. package/contracts/product/IPricingService.sol +39 -0
  373. package/contracts/product/IProductComponent.sol +40 -0
  374. package/contracts/product/IProductService.sol +33 -0
  375. package/contracts/product/PolicyService.sol +575 -0
  376. package/contracts/product/PolicyServiceManager.sol +39 -0
  377. package/contracts/product/PricingService.sol +304 -0
  378. package/contracts/product/PricingServiceManager.sol +39 -0
  379. package/contracts/product/Product.sol +413 -0
  380. package/contracts/product/ProductService.sol +99 -0
  381. package/contracts/product/ProductServiceManager.sol +39 -0
  382. package/contracts/registry/ChainNft.sol +16 -1
  383. package/contracts/registry/IRegistry.sol +80 -23
  384. package/contracts/registry/IRegistryService.sol +47 -32
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +334 -143
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +114 -192
  389. package/contracts/registry/RegistryServiceManager.sol +26 -33
  390. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  391. package/contracts/registry/ReleaseRegistry.sol +485 -0
  392. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  393. package/contracts/registry/TokenRegistry.sol +263 -58
  394. package/contracts/shared/Component.sol +281 -0
  395. package/contracts/shared/ComponentService.sol +650 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/shared/IComponent.sol +71 -0
  399. package/contracts/shared/IComponentService.sol +108 -0
  400. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  401. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  402. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  403. package/contracts/shared/INftOwnable.sol +13 -12
  404. package/contracts/shared/IPolicyHolder.sol +45 -0
  405. package/contracts/shared/IRegisterable.sol +4 -6
  406. package/contracts/shared/IRegistryLinked.sol +11 -0
  407. package/contracts/shared/IService.sol +15 -6
  408. package/contracts/shared/InitializableCustom.sol +177 -0
  409. package/contracts/shared/InitializableERC165.sol +27 -0
  410. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  411. package/contracts/shared/KeyValueStore.sol +131 -0
  412. package/contracts/shared/Lifecycle.sol +77 -0
  413. package/contracts/shared/NftIdSet.sol +65 -0
  414. package/contracts/shared/NftOwnable.sol +59 -86
  415. package/contracts/shared/PolicyHolder.sol +99 -0
  416. package/contracts/shared/Registerable.sol +26 -41
  417. package/contracts/shared/RegistryLinked.sol +43 -0
  418. package/contracts/shared/Service.sol +57 -33
  419. package/contracts/shared/TokenHandler.sol +41 -6
  420. package/contracts/staking/IStaking.sol +167 -0
  421. package/contracts/staking/IStakingService.sol +160 -0
  422. package/contracts/staking/StakeManagerLib.sol +231 -0
  423. package/contracts/staking/Staking.sol +516 -0
  424. package/contracts/staking/StakingLifecycle.sol +23 -0
  425. package/contracts/staking/StakingManager.sol +50 -0
  426. package/contracts/staking/StakingReader.sol +183 -0
  427. package/contracts/staking/StakingService.sol +407 -0
  428. package/contracts/staking/StakingServiceManager.sol +44 -0
  429. package/contracts/staking/StakingStore.sol +605 -0
  430. package/contracts/staking/TargetManagerLib.sol +207 -0
  431. package/contracts/{types → type}/AddressSet.sol +1 -1
  432. package/contracts/type/Amount.sol +135 -0
  433. package/contracts/{types → type}/Blocknumber.sol +27 -3
  434. package/contracts/type/ClaimId.sol +75 -0
  435. package/contracts/{types → type}/DistributorType.sol +2 -2
  436. package/contracts/{types → type}/Fee.sol +33 -23
  437. package/contracts/{types → type}/NftId.sol +21 -15
  438. package/contracts/{types → type}/NftIdSet.sol +2 -2
  439. package/contracts/type/ObjectType.sol +271 -0
  440. package/contracts/type/PayoutId.sol +82 -0
  441. package/contracts/{types → type}/Referral.sol +6 -1
  442. package/contracts/type/RequestId.sol +75 -0
  443. package/contracts/{types → type}/RiskId.sol +1 -1
  444. package/contracts/type/RoleId.sol +174 -0
  445. package/contracts/type/Seconds.sol +93 -0
  446. package/contracts/type/Selector.sol +102 -0
  447. package/contracts/{types → type}/StateId.sol +34 -4
  448. package/contracts/type/String.sol +53 -0
  449. package/contracts/{types → type}/Timestamp.sol +34 -15
  450. package/contracts/{types → type}/UFixed.sol +35 -9
  451. package/contracts/{types → type}/Version.sol +5 -2
  452. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  453. package/contracts/upgradeability/ProxyManager.sol +198 -0
  454. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  455. package/contracts/upgradeability/Versionable.sol +59 -0
  456. package/package.json +10 -7
  457. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  458. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  459. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  460. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  462. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  463. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  464. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  465. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  466. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  467. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  468. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  469. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  470. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  473. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  475. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  477. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  479. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  481. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  483. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  485. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  487. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  489. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  491. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  494. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  496. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  498. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  501. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  503. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  505. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  507. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  509. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  510. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  511. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  512. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -788
  513. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  514. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  515. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  516. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  517. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -940
  518. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  519. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  520. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  521. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  522. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  524. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  525. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  528. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  529. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  530. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  531. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  532. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -923
  535. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -440
  537. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
  539. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -671
  541. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  543. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
  546. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  548. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  550. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  551. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  552. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -971
  553. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  554. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
  555. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  556. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -705
  557. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  558. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -428
  559. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  560. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -755
  561. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  562. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  563. package/artifacts/contracts/registry/RegistryServiceAccessManager.sol/RegistryServiceAccessManager.dbg.json +0 -4
  564. package/artifacts/contracts/registry/RegistryServiceAccessManager.sol/RegistryServiceAccessManager.json +0 -275
  565. package/artifacts/contracts/registry/RegistryServiceReleaseManager.sol/RegistryServiceReleaseManager.dbg.json +0 -4
  566. package/artifacts/contracts/registry/RegistryServiceReleaseManager.sol/RegistryServiceReleaseManager.json +0 -521
  567. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  568. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  569. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  570. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  571. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  572. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  573. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  574. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  575. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  576. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  577. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  578. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  579. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  580. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  581. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  582. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  583. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  584. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  585. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  586. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  587. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  588. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  589. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  590. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  591. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  592. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  593. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  594. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  595. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  596. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  597. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  598. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  599. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  601. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  603. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  605. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  607. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  608. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  609. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  611. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  612. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  613. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  615. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  616. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  617. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  618. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  619. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  621. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  623. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  624. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  626. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  628. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  630. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  632. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  634. package/contracts/components/BaseComponent.sol +0 -132
  635. package/contracts/components/Distribution.sol +0 -163
  636. package/contracts/components/IBaseComponent.sol +0 -31
  637. package/contracts/components/IDistributionComponent.sol +0 -44
  638. package/contracts/components/IPoolComponent.sol +0 -66
  639. package/contracts/components/IProductComponent.sol +0 -35
  640. package/contracts/components/Pool.sol +0 -271
  641. package/contracts/components/Product.sol +0 -292
  642. package/contracts/experiment/cloning/Cloner.sol +0 -47
  643. package/contracts/experiment/errors/Require.sol +0 -38
  644. package/contracts/experiment/errors/Revert.sol +0 -44
  645. package/contracts/experiment/inheritance/A.sol +0 -53
  646. package/contracts/experiment/inheritance/B.sol +0 -28
  647. package/contracts/experiment/inheritance/C.sol +0 -34
  648. package/contracts/experiment/inheritance/IA.sol +0 -13
  649. package/contracts/experiment/inheritance/IB.sol +0 -10
  650. package/contracts/experiment/inheritance/IC.sol +0 -12
  651. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  652. package/contracts/experiment/statemachine/ISM.sol +0 -25
  653. package/contracts/experiment/statemachine/SM.sol +0 -57
  654. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  655. package/contracts/experiment/types/TypeA.sol +0 -47
  656. package/contracts/experiment/types/TypeB.sol +0 -29
  657. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  658. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  659. package/contracts/instance/IInstanceBase.sol +0 -26
  660. package/contracts/instance/InstanceAccessManager.sol +0 -288
  661. package/contracts/instance/InstanceBase.sol +0 -41
  662. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  663. package/contracts/instance/base/IInstanceBase.sol +0 -23
  664. package/contracts/instance/base/KeyValueStore.sol +0 -172
  665. package/contracts/instance/base/Lifecycle.sol +0 -100
  666. package/contracts/instance/module/ISetup.sol +0 -46
  667. package/contracts/instance/module/ITreasury.sol +0 -23
  668. package/contracts/instance/service/BundleService.sol +0 -260
  669. package/contracts/instance/service/BundleServiceManager.sol +0 -55
  670. package/contracts/instance/service/ComponentOwnerService.sol +0 -315
  671. package/contracts/instance/service/DistributionService.sol +0 -114
  672. package/contracts/instance/service/DistributionServiceManager.sol +0 -55
  673. package/contracts/instance/service/IBundleService.sol +0 -45
  674. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  675. package/contracts/instance/service/IDistributionService.sol +0 -12
  676. package/contracts/instance/service/IPolicyService.sol +0 -87
  677. package/contracts/instance/service/IPoolService.sol +0 -20
  678. package/contracts/instance/service/IProductService.sol +0 -40
  679. package/contracts/instance/service/PolicyService.sol +0 -503
  680. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  681. package/contracts/instance/service/PoolService.sol +0 -122
  682. package/contracts/instance/service/PoolServiceManager.sol +0 -55
  683. package/contracts/instance/service/ProductService.sol +0 -168
  684. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  685. package/contracts/registry/RegistryServiceAccessManager.sol +0 -210
  686. package/contracts/registry/RegistryServiceReleaseManager.sol +0 -366
  687. package/contracts/shared/ContractDeployerLib.sol +0 -72
  688. package/contracts/shared/ERC165.sol +0 -25
  689. package/contracts/shared/ProxyManager.sol +0 -94
  690. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  691. package/contracts/shared/Versionable.sol +0 -147
  692. package/contracts/test/TestFee.sol +0 -25
  693. package/contracts/test/TestRegisterable.sol +0 -18
  694. package/contracts/test/TestRoleId.sol +0 -14
  695. package/contracts/test/TestService.sol +0 -25
  696. package/contracts/test/TestToken.sol +0 -26
  697. package/contracts/test/TestVersion.sol +0 -44
  698. package/contracts/test/TestVersionable.sol +0 -17
  699. package/contracts/types/ChainId.sol +0 -38
  700. package/contracts/types/NumberId.sol +0 -52
  701. package/contracts/types/ObjectType.sol +0 -152
  702. package/contracts/types/RoleId.sol +0 -91
  703. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,149 @@
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
+ error ErrorPoolServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
34
+ error ErrorPoolServiceAmountIsZero();
35
+
36
+ /// @dev defines the required role for bundle owners for the calling pool
37
+ /// default implementation returns PUBLIC ROLE
38
+ function setBundleOwnerRole(RoleId bundleOwnerRole) external;
39
+
40
+ /// @dev sets the max balance amount for the calling pool
41
+ function setMaxBalanceAmount(Amount maxBalanceAmount) external;
42
+
43
+ /// @dev locks required collateral to cover the specified application (and turn it into a policy)
44
+ /// - retention level == 1: the full collateral amount will be locked by the specified bundle
45
+ /// - retention level < 1: a part of the coverage is provided by the specified bundle, the rest by the pool component
46
+ /// in which case the pool component might hold a re-insurance policy
47
+ /// may only be called by the policy service for unlocked pool components
48
+ function lockCollateral(
49
+ IInstance instance,
50
+ address token,
51
+ NftId productNftId,
52
+ NftId applicationNftId,
53
+ NftId bundleNftId,
54
+ Amount sumInsuredAmount // premium amount after product and distribution fees
55
+ )
56
+ external
57
+ returns (
58
+ Amount localCollateralAmount,
59
+ Amount totalCollateralAmount
60
+ );
61
+
62
+
63
+ /// @dev releases the remaining collateral linked to the specified policy
64
+ /// may only be called by the policy service for unlocked pool components
65
+ function releaseCollateral(
66
+ IInstance instance,
67
+ address token,
68
+ NftId policyNftId,
69
+ IPolicy.PolicyInfo memory policyInfo
70
+ ) external;
71
+
72
+
73
+ /// @dev reduces the locked collateral in the bundle associated with the specified policy
74
+ /// every payout of a policy reduces the collateral by the payout amount
75
+ /// may only be called by the claim service for unlocked pool components
76
+ function reduceCollateral(
77
+ IInstance instance,
78
+ address token,
79
+ NftId policyNftId,
80
+ IPolicy.PolicyInfo memory policyInfo,
81
+ Amount payoutAmount
82
+ ) external;
83
+
84
+
85
+ /// @dev create a new bundle for the provided parameters
86
+ /// staking fees will be deducted by the pool service from the staking amount
87
+ /// may only be called by registered and unlocked pool components.
88
+ /// The pool balance is equal to the pool fees plus the capital of all bundles.
89
+ function createBundle(
90
+ address owner, // initial bundle owner
91
+ Fee memory fee, // fees deducted from premium that go to bundle owner
92
+ Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
93
+ Seconds lifetime, // initial duration for which new policies are covered
94
+ bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
95
+ )
96
+ external
97
+ returns(NftId bundleNftId, Amount netStakedAmount); // the nft id of the newly created bundle
98
+
99
+
100
+ /// @dev closes the specified bundle
101
+ /// only open bundles (active or locked) may be closed
102
+ /// to close a bundle it may not have any non-closed polices attached to it
103
+ /// bundle fees and remaining capital (after deduction of the performance fee) will be transferred to the bundle owner
104
+ /// may only be called by registered and unlocked pool components
105
+ function closeBundle(NftId bundleNftId) external;
106
+
107
+
108
+ /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
109
+ function processSale(NftId bundleNftId, IPolicy.Premium memory premium) external;
110
+
111
+ /// @dev increase stakes for bundle
112
+ /// staking fees will be deducted by the pool service from the staking amount
113
+ /// may only be called by registered and unlocked pool components
114
+ function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
115
+
116
+ /// @dev decrease stakes for bundle
117
+ /// performance fees will be deducted by the pool service from the staking amount
118
+ /// may only be called by registered and unlocked pool components
119
+ function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
120
+
121
+
122
+ /// @dev calulate required collateral for the provided parameters
123
+ function calculateRequiredCollateral(
124
+ InstanceReader instanceReader,
125
+ NftId productNftId,
126
+ Amount sumInsuredAmount
127
+ )
128
+ external
129
+ view
130
+ returns(
131
+ Amount localCollateralAmount,
132
+ Amount totalCollateralAmount
133
+ );
134
+
135
+
136
+ /// @dev calulate required collateral for the provided parameters
137
+ function calculateRequiredCollateral(
138
+ UFixed collateralizationLevel,
139
+ UFixed retentionLevel,
140
+ Amount sumInsuredAmount
141
+ )
142
+ external
143
+ pure
144
+ returns(
145
+ Amount localCollateralAmount,
146
+ Amount totalCollateralAmount
147
+ );
148
+
149
+ }
@@ -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
+ }