@etherisc/gif-next 0.0.2-b9e43cf-870 → 0.0.2-bad23b9-926

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