@etherisc/gif-next 0.0.2-a0d749a → 0.0.2-a105567-464

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 (514) hide show
  1. package/README.md +348 -20
  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 +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +294 -514
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +650 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +490 -585
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +692 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +204 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1570 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1045 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +730 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -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/base/Cloneable.sol/Cloneable.json +190 -0
  36. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  41. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  42. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  47. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  48. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  49. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  50. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  51. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  52. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1097 -0
  54. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +742 -0
  56. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +690 -0
  58. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  60. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1050 -0
  62. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1417 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  68. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +826 -0
  70. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +718 -0
  72. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1270 -0
  74. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +806 -0
  76. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +499 -0
  78. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  80. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -0
  82. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +536 -0
  84. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  86. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.json +387 -0
  88. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1138 -0
  90. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +750 -0
  92. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.json +975 -0
  94. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +774 -0
  96. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  97. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  98. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  100. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  102. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  104. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +707 -67
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1110 -0
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +1028 -114
  112. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1415 -0
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +709 -0
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
  120. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  121. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  123. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +643 -0
  124. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  125. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  126. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  127. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  130. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  131. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  132. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  133. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  134. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  135. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  136. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  137. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
  138. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
  140. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  141. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
  142. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  143. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  144. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  146. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  148. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  150. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
  152. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  154. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  155. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +478 -0
  156. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +115 -0
  158. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  159. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +42 -77
  160. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  162. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  163. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +98 -79
  164. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  166. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IService.sol/IService.json +333 -0
  168. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  170. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  171. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  172. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  173. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  174. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  175. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
  176. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  177. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  178. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  180. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  181. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  182. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  183. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  184. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  186. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  187. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
  188. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  189. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  190. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  191. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +260 -218
  192. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  193. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  194. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  195. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  196. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  197. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  198. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  199. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1441 -0
  200. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
  201. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
  202. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  203. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +890 -0
  204. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
  205. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
  206. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  207. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
  208. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  209. package/artifacts/contracts/staking/Staking.sol/Staking.json +2008 -0
  210. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  211. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  212. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +390 -0
  214. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  215. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1213 -0
  216. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  217. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +722 -0
  218. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1682 -0
  220. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  221. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -0
  222. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  223. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  224. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  226. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  228. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  229. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  230. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  231. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  232. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  234. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  235. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  236. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
  238. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  239. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  240. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +92 -0
  242. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  244. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  246. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  248. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  250. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -0
  252. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  254. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
  256. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  258. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
  260. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  262. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  264. package/contracts/distribution/Distribution.sol +261 -0
  265. package/contracts/distribution/DistributionService.sol +298 -0
  266. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  267. package/contracts/distribution/IDistributionComponent.sol +66 -0
  268. package/contracts/distribution/IDistributionService.sol +81 -0
  269. package/contracts/instance/BundleManager.sol +126 -0
  270. package/contracts/instance/IInstance.sol +78 -17
  271. package/contracts/instance/IInstanceService.sol +81 -0
  272. package/contracts/instance/Instance.sol +227 -56
  273. package/contracts/instance/InstanceAdmin.sol +331 -0
  274. package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
  275. package/contracts/instance/InstanceReader.sol +365 -0
  276. package/contracts/instance/InstanceService.sol +362 -0
  277. package/contracts/instance/InstanceServiceManager.sol +44 -0
  278. package/contracts/instance/InstanceStore.sol +260 -0
  279. package/contracts/instance/base/BalanceStore.sol +118 -0
  280. package/contracts/instance/base/Cloneable.sol +51 -0
  281. package/contracts/instance/base/ObjectManager.sol +82 -0
  282. package/contracts/instance/module/IAccess.sol +46 -0
  283. package/contracts/instance/module/IBundle.sol +20 -0
  284. package/contracts/instance/module/IComponents.sol +52 -0
  285. package/contracts/instance/module/IDistribution.sol +42 -0
  286. package/contracts/instance/module/IPolicy.sol +84 -0
  287. package/contracts/instance/module/IRisk.sol +11 -0
  288. package/contracts/mock/Dip.sol +26 -0
  289. package/contracts/pool/BundleService.sol +296 -0
  290. package/contracts/pool/BundleServiceManager.sol +42 -0
  291. package/contracts/pool/IBundleService.sol +106 -0
  292. package/contracts/pool/IPoolComponent.sol +112 -0
  293. package/contracts/pool/IPoolService.sol +147 -0
  294. package/contracts/pool/Pool.sol +299 -0
  295. package/contracts/pool/PoolService.sol +424 -0
  296. package/contracts/pool/PoolServiceManager.sol +42 -0
  297. package/contracts/product/ApplicationService.sol +254 -0
  298. package/contracts/product/ApplicationServiceManager.sol +38 -0
  299. package/contracts/product/ClaimService.sol +437 -0
  300. package/contracts/product/ClaimServiceManager.sol +38 -0
  301. package/contracts/product/IApplicationService.sol +62 -0
  302. package/contracts/product/IClaimService.sol +93 -0
  303. package/contracts/product/IPolicyService.sol +78 -0
  304. package/contracts/product/IPricingService.sol +39 -0
  305. package/contracts/product/IProductComponent.sol +42 -0
  306. package/contracts/product/IProductService.sol +33 -0
  307. package/contracts/product/PolicyService.sol +473 -0
  308. package/contracts/product/PolicyServiceManager.sol +42 -0
  309. package/contracts/product/PricingService.sol +301 -0
  310. package/contracts/product/PricingServiceManager.sol +42 -0
  311. package/contracts/product/Product.sol +377 -0
  312. package/contracts/product/ProductService.sol +124 -0
  313. package/contracts/product/ProductServiceManager.sol +42 -0
  314. package/contracts/registry/ChainNft.sol +143 -62
  315. package/contracts/registry/IRegistry.sol +95 -49
  316. package/contracts/registry/IRegistryService.sol +69 -0
  317. package/contracts/registry/ITransferInterceptor.sol +7 -0
  318. package/contracts/registry/Registry.sol +518 -142
  319. package/contracts/registry/RegistryAdmin.sol +237 -0
  320. package/contracts/registry/RegistryService.sol +266 -0
  321. package/contracts/registry/RegistryServiceManager.sol +58 -0
  322. package/contracts/registry/ReleaseManager.sol +599 -0
  323. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  324. package/contracts/registry/TokenRegistry.sol +358 -0
  325. package/contracts/shared/AccessManagerCustom.sol +736 -0
  326. package/contracts/shared/AccessManagerExtended.sol +470 -0
  327. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  328. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  329. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  330. package/contracts/shared/Component.sol +286 -0
  331. package/contracts/shared/ComponentService.sol +596 -0
  332. package/contracts/shared/ComponentServiceManager.sol +35 -0
  333. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  334. package/contracts/shared/ERC165.sol +27 -0
  335. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  336. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  337. package/contracts/shared/IComponent.sol +74 -0
  338. package/contracts/shared/IComponentService.sol +91 -0
  339. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  340. package/contracts/shared/IKeyValueStore.sol +53 -0
  341. package/contracts/shared/ILifecycle.sol +30 -0
  342. package/contracts/shared/INftOwnable.sol +23 -0
  343. package/contracts/shared/IPolicyHolder.sol +45 -0
  344. package/contracts/shared/IRegisterable.sol +15 -0
  345. package/contracts/shared/IRegistryLinked.sol +11 -0
  346. package/contracts/shared/IService.sol +18 -0
  347. package/contracts/shared/IVersionable.sol +53 -0
  348. package/contracts/shared/InitializableCustom.sol +177 -0
  349. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  350. package/contracts/shared/KeyValueStore.sol +130 -0
  351. package/contracts/shared/Lifecycle.sol +121 -0
  352. package/contracts/shared/NftIdSetManager.sol +65 -0
  353. package/contracts/shared/NftOwnable.sol +107 -0
  354. package/contracts/shared/PolicyHolder.sol +102 -0
  355. package/contracts/shared/ProxyManager.sol +199 -0
  356. package/contracts/shared/Registerable.sol +75 -0
  357. package/contracts/shared/RegistryLinked.sol +43 -0
  358. package/contracts/shared/Service.sol +77 -0
  359. package/contracts/shared/TokenHandler.sol +58 -0
  360. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  361. package/contracts/shared/Versionable.sol +59 -0
  362. package/contracts/staking/IStaking.sol +152 -0
  363. package/contracts/staking/IStakingManager.sol +15 -0
  364. package/contracts/staking/IStakingService.sol +162 -0
  365. package/contracts/staking/IStakingStore.sol +130 -0
  366. package/contracts/staking/StakeManagerLib.sol +156 -0
  367. package/contracts/staking/Staking.sol +496 -0
  368. package/contracts/staking/StakingManager.sol +54 -0
  369. package/contracts/staking/StakingReader.sol +146 -0
  370. package/contracts/staking/StakingService.sol +376 -0
  371. package/contracts/staking/StakingServiceManager.sol +45 -0
  372. package/contracts/staking/StakingStore.sol +331 -0
  373. package/contracts/staking/TargetManagerLib.sol +179 -0
  374. package/contracts/type/AddressSet.sol +58 -0
  375. package/contracts/type/Amount.sol +114 -0
  376. package/contracts/{types → type}/Blocknumber.sol +21 -3
  377. package/contracts/type/ClaimId.sol +75 -0
  378. package/contracts/type/DistributorType.sol +55 -0
  379. package/contracts/type/Fee.sol +66 -0
  380. package/contracts/type/Key32.sol +50 -0
  381. package/contracts/{types → type}/NftId.sol +40 -13
  382. package/contracts/type/NftIdSet.sol +62 -0
  383. package/contracts/type/ObjectType.sol +169 -0
  384. package/contracts/type/PayoutId.sol +82 -0
  385. package/contracts/type/Referral.sol +89 -0
  386. package/contracts/type/RiskId.sol +43 -0
  387. package/contracts/type/RoleId.sol +143 -0
  388. package/contracts/type/Seconds.sol +71 -0
  389. package/contracts/type/StateId.sol +123 -0
  390. package/contracts/{types → type}/Timestamp.sol +36 -6
  391. package/contracts/type/UFixed.sol +326 -0
  392. package/contracts/type/Version.sol +108 -0
  393. package/package.json +16 -6
  394. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  395. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  396. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  397. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  398. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  399. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  400. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  401. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  402. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  403. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  404. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  405. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  406. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  407. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  408. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  409. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  410. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  411. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  412. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  413. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  414. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  415. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  416. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  417. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  418. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  419. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  420. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  421. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  422. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  423. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  424. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  425. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  426. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  427. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  428. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  429. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  430. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  431. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  432. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  433. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  434. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  435. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  436. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  437. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  438. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  439. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  440. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  441. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  442. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  443. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  444. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  445. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  446. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  447. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  448. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  449. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  450. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  451. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  452. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  453. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  454. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  455. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  456. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  457. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  458. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  459. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  460. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  461. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  462. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  463. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  464. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  465. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  466. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  467. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  468. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  469. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  470. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  471. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  472. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  473. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  474. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  475. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  476. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  477. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  478. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  479. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  480. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  481. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  482. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  483. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  484. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  485. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  486. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  487. package/contracts/components/Component.sol +0 -60
  488. package/contracts/components/IPool.sol +0 -9
  489. package/contracts/components/IProduct.sol +0 -9
  490. package/contracts/components/Pool.sol +0 -22
  491. package/contracts/components/Product.sol +0 -55
  492. package/contracts/experiment/errors/Require.sol +0 -38
  493. package/contracts/experiment/errors/Revert.sol +0 -44
  494. package/contracts/experiment/inheritance/A.sol +0 -53
  495. package/contracts/experiment/inheritance/B.sol +0 -28
  496. package/contracts/experiment/inheritance/C.sol +0 -34
  497. package/contracts/experiment/inheritance/IA.sol +0 -13
  498. package/contracts/experiment/inheritance/IB.sol +0 -10
  499. package/contracts/experiment/inheritance/IC.sol +0 -12
  500. package/contracts/experiment/types/TypeA.sol +0 -47
  501. package/contracts/experiment/types/TypeB.sol +0 -29
  502. package/contracts/instance/access/Access.sol +0 -165
  503. package/contracts/instance/access/IAccess.sol +0 -63
  504. package/contracts/instance/component/ComponentModule.sol +0 -213
  505. package/contracts/instance/component/IComponent.sol +0 -73
  506. package/contracts/instance/policy/IPolicy.sol +0 -51
  507. package/contracts/instance/policy/PolicyModule.sol +0 -91
  508. package/contracts/instance/pool/IPoolModule.sol +0 -29
  509. package/contracts/instance/pool/PoolModule.sol +0 -73
  510. package/contracts/instance/product/IProductService.sol +0 -36
  511. package/contracts/instance/product/ProductService.sol +0 -112
  512. package/contracts/registry/IChainNft.sol +0 -21
  513. package/contracts/types/ChainId.sol +0 -38
  514. package/contracts/types/UFixed.sol +0 -205
@@ -0,0 +1,424 @@
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} 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 {InstanceService} from "../instance/InstanceService.sol";
39
+ import {InstanceReader} from "../instance/InstanceReader.sol";
40
+ import {InstanceStore} from "../instance/InstanceStore.sol";
41
+ import {IComponent} from "../shared/IComponent.sol";
42
+ import {IPoolComponent} from "./IPoolComponent.sol";
43
+
44
+ string constant POOL_SERVICE_NAME = "PoolService";
45
+
46
+ contract PoolService is
47
+ ComponentVerifyingService,
48
+ IPoolService
49
+ {
50
+ using NftIdLib for NftId;
51
+ using AmountLib for Amount;
52
+
53
+ IBundleService internal _bundleService;
54
+ IComponentService internal _componentService;
55
+ IInstanceService private _instanceService;
56
+ IRegistryService private _registryService;
57
+
58
+ function _initialize(
59
+ address owner,
60
+ bytes memory data
61
+ )
62
+ internal
63
+ initializer
64
+ virtual override
65
+ {
66
+ (
67
+ address registryAddress,,
68
+ //address managerAddress
69
+ address authority
70
+ ) = abi.decode(data, (address, address, address));
71
+
72
+ initializeService(registryAddress, authority, owner);
73
+
74
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
75
+ _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
76
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
77
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
78
+
79
+ registerInterface(type(IPoolService).interfaceId);
80
+ }
81
+
82
+ function getDomain() public pure override returns(ObjectType) {
83
+ return POOL();
84
+ }
85
+
86
+
87
+ function setMaxCapitalAmount(Amount maxCapitalAmount)
88
+ external
89
+ virtual
90
+ {
91
+ /*
92
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
93
+ InstanceReader instanceReader = instance.getInstanceReader();
94
+
95
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
96
+ IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
97
+ Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
98
+
99
+ poolInfo.maxCapitalAmount = maxCapitalAmount;
100
+ instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
101
+
102
+ emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
103
+ */
104
+ }
105
+
106
+ function setBundleOwnerRole(RoleId bundleOwnerRole)
107
+ external
108
+ virtual
109
+ {
110
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
111
+ InstanceReader instanceReader = instance.getInstanceReader();
112
+
113
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
114
+ IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
115
+
116
+ // bundle owner role may only be set once per pool
117
+ if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
118
+ revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
119
+ }
120
+
121
+ poolInfo.bundleOwnerRole = bundleOwnerRole;
122
+ instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
123
+
124
+ emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
125
+ }
126
+
127
+
128
+ function setFees(
129
+ Fee memory poolFee,
130
+ Fee memory stakingFee,
131
+ Fee memory performanceFee
132
+ )
133
+ external
134
+ virtual
135
+ {
136
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
137
+
138
+ IComponents.PoolInfo memory poolInfo = instance.getInstanceReader().getPoolInfo(poolNftId);
139
+ poolInfo.poolFee = poolFee;
140
+ poolInfo.stakingFee = stakingFee;
141
+ poolInfo.performanceFee = performanceFee;
142
+
143
+ instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
144
+
145
+ // TODO add logging
146
+ }
147
+
148
+ function createBundle(
149
+ address bundleOwner, // initial bundle owner
150
+ Fee memory fee, // fees deducted from premium that go to bundle owner
151
+ Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
152
+ Seconds lifetime, // initial duration for which new policies are covered
153
+ bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
154
+ )
155
+ external
156
+ virtual
157
+ returns(NftId bundleNftId)
158
+ {
159
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
160
+ InstanceReader instanceReader = instance.getInstanceReader();
161
+
162
+ (
163
+ Amount stakingFeeAmount,
164
+ Amount stakingNetAmount
165
+ ) = FeeLib.calculateFee(
166
+ _getStakingFee(instanceReader, poolNftId),
167
+ stakingAmount);
168
+
169
+ bundleNftId = _bundleService.create(
170
+ instance,
171
+ poolNftId,
172
+ bundleOwner,
173
+ fee,
174
+ stakingNetAmount,
175
+ lifetime,
176
+ filter);
177
+
178
+ // pool book keeping
179
+ _componentService.increasePoolBalance(
180
+ instance.getInstanceStore(),
181
+ poolNftId,
182
+ stakingAmount,
183
+ stakingFeeAmount);
184
+
185
+ // pool bookkeeping and collect tokens from bundle owner
186
+ _collectStakingAmount(
187
+ instanceReader,
188
+ poolNftId,
189
+ bundleOwner,
190
+ stakingAmount);
191
+
192
+ emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
193
+ }
194
+
195
+ function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
196
+ internal
197
+ virtual
198
+ view
199
+ returns (Fee memory stakingFee)
200
+ {
201
+ NftId productNftId = instanceReader.getPoolInfo(poolNftId).productNftId;
202
+ return instanceReader.getPoolInfo(productNftId).stakingFee;
203
+ }
204
+
205
+ function closeBundle(NftId bundleNftId)
206
+ external
207
+ virtual
208
+ {
209
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
210
+
211
+ // TODO book keeping for pool collateral released outside of retention level
212
+
213
+ // releasing collateral in bundle
214
+ _bundleService.close(instance, bundleNftId);
215
+
216
+ // TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
217
+
218
+ emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
219
+ }
220
+
221
+ function processSale(
222
+ NftId bundleNftId,
223
+ IPolicy.Premium memory premium
224
+ )
225
+ external
226
+ virtual
227
+ restricted
228
+ {
229
+ IRegistry registry = getRegistry();
230
+ IRegistry.ObjectInfo memory bundleObjectInfo = registry.getObjectInfo(bundleNftId);
231
+ IRegistry.ObjectInfo memory poolObjectInfo = registry.getObjectInfo(bundleObjectInfo.parentNftId);
232
+ IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
233
+ IInstance instance = IInstance(instanceObjectInfo.objectAddress);
234
+
235
+ Amount poolFeeAmount = AmountLib.toAmount(premium.poolFeeFixAmount + premium.poolFeeVarAmount);
236
+ Amount bundleFeeAmount = AmountLib.toAmount(premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
237
+ Amount bundleNetAmount = AmountLib.toAmount(premium.netPremiumAmount);
238
+
239
+ InstanceStore instanceStore = instance.getInstanceStore();
240
+ _componentService.increasePoolBalance(
241
+ instanceStore,
242
+ poolObjectInfo.nftId,
243
+ bundleNetAmount + bundleFeeAmount,
244
+ poolFeeAmount);
245
+
246
+ _componentService.increaseBundleBalance(
247
+ instanceStore,
248
+ bundleObjectInfo.nftId,
249
+ bundleNetAmount,
250
+ bundleFeeAmount);
251
+ }
252
+
253
+
254
+ function lockCollateral(
255
+ IInstance instance,
256
+ NftId productNftId,
257
+ NftId applicationNftId,
258
+ NftId bundleNftId,
259
+ Amount sumInsuredAmount // premium amount after product and distribution fees
260
+ )
261
+ external
262
+ virtual
263
+ restricted()
264
+ returns (
265
+ Amount localCollateralAmount,
266
+ Amount totalCollateralAmount
267
+ )
268
+ {
269
+ (
270
+ localCollateralAmount,
271
+ totalCollateralAmount
272
+ ) = calculateRequiredCollateral(
273
+ instance.getInstanceReader(),
274
+ productNftId,
275
+ sumInsuredAmount);
276
+
277
+ // lock collateral amount from involved bundle
278
+ _bundleService.lockCollateral(
279
+ instance,
280
+ applicationNftId,
281
+ bundleNftId,
282
+ localCollateralAmount);
283
+
284
+ // hierarhical riskpool setup
285
+ // TODO loop in with pool component to guarantee availability of external capital
286
+ if(totalCollateralAmount > localCollateralAmount) {
287
+
288
+ }
289
+ }
290
+
291
+
292
+ function reduceCollateral(
293
+ IInstance instance,
294
+ NftId policyNftId,
295
+ IPolicy.PolicyInfo memory policyInfo,
296
+ Amount payoutAmount
297
+ )
298
+ external
299
+ virtual
300
+ restricted
301
+ {
302
+ _bundleService.releaseCollateral(
303
+ instance,
304
+ policyNftId,
305
+ policyInfo.bundleNftId,
306
+ payoutAmount);
307
+ }
308
+
309
+
310
+ /// @dev releases the remaining collateral linked to the specified policy
311
+ /// may only be called by the policy service for unlocked pool components
312
+ function releaseCollateral(
313
+ IInstance instance,
314
+ NftId policyNftId,
315
+ IPolicy.PolicyInfo memory policyInfo
316
+ )
317
+ external
318
+ virtual
319
+ restricted
320
+ {
321
+ _bundleService.releaseCollateral(
322
+ instance,
323
+ policyNftId,
324
+ policyInfo.bundleNftId,
325
+ policyInfo.sumInsuredAmount - policyInfo.claimAmount);
326
+
327
+ _bundleService.unlinkPolicy(
328
+ instance,
329
+ policyNftId);
330
+ }
331
+
332
+
333
+ function calculateRequiredCollateral(
334
+ InstanceReader instanceReader,
335
+ NftId productNftId,
336
+ Amount sumInsuredAmount
337
+ )
338
+ public
339
+ view
340
+ returns(
341
+ Amount localCollateralAmount,
342
+ Amount totalCollateralAmount
343
+ )
344
+ {
345
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
346
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
347
+
348
+ (
349
+ localCollateralAmount,
350
+ totalCollateralAmount
351
+ ) = calculateRequiredCollateral(
352
+ poolInfo.collateralizationLevel,
353
+ poolInfo.retentionLevel,
354
+ sumInsuredAmount);
355
+ }
356
+
357
+
358
+ function calculateRequiredCollateral(
359
+ UFixed collateralizationLevel,
360
+ UFixed retentionLevel,
361
+ Amount sumInsuredAmount
362
+ )
363
+ public
364
+ pure
365
+ returns(
366
+ Amount localCollateralAmount,
367
+ Amount totalCollateralAmount
368
+ )
369
+ {
370
+ // TODO define if only applies to local collateral
371
+ // TODO add minimalistic implementation
372
+
373
+ // assumptions
374
+ // - collateralizationLevel == 1.0
375
+ // - retentionLevel == 1.0
376
+ localCollateralAmount = sumInsuredAmount;
377
+ totalCollateralAmount = localCollateralAmount;
378
+ }
379
+
380
+
381
+ function _processStakingFees(
382
+ Fee memory stakingFee,
383
+ Amount stakingAmount
384
+ )
385
+ internal
386
+ returns (Amount stakingNetAmount)
387
+ {
388
+ stakingNetAmount = stakingAmount;
389
+
390
+ // check if any staking fees apply
391
+ if (FeeLib.gtz(stakingFee)) {
392
+ (Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
393
+ stakingNetAmount = netAmount;
394
+
395
+ // TODO update fee balance for pool
396
+ }
397
+ }
398
+
399
+
400
+ // TODO create (I)TreasuryService that deals with all gif related token transfers
401
+ /// @dev transfers the specified amount from the bundle owner to the pool's wallet
402
+ function _collectStakingAmount(
403
+ InstanceReader instanceReader,
404
+ NftId poolNftId,
405
+ address bundleOwner,
406
+ Amount amount
407
+ )
408
+ internal
409
+ {
410
+
411
+ // collecting investor token
412
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
413
+ TokenHandler tokenHandler = componentInfo.tokenHandler;
414
+ address poolWallet = componentInfo.wallet;
415
+
416
+ if(amount.gtz()) {
417
+ tokenHandler.transfer(
418
+ bundleOwner,
419
+ poolWallet,
420
+ amount);
421
+ }
422
+ }
423
+
424
+ }
@@ -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
+ }