@etherisc/gif-next 0.0.2-cc4a5cb-898 → 0.0.2-cc74a8b-656

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 (485) hide show
  1. package/README.md +218 -39
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +842 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1056 -132
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +605 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +676 -47
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +702 -125
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +525 -65
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1032 -234
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +840 -117
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1437 -1077
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +633 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2114 -1210
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1330 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1289 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1179 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +741 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +607 -0
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +67 -245
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  51. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  57. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  61. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  62. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  63. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  64. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  65. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1039 -0
  67. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +673 -0
  69. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1231 -0
  71. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +721 -0
  73. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +817 -0
  75. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
  77. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1576 -198
  79. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +805 -0
  81. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +622 -0
  83. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +659 -0
  85. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +475 -0
  87. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +867 -102
  89. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +606 -0
  91. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +527 -123
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +151 -331
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1092 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +697 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +831 -137
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +430 -448
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
  107. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -34
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +866 -0
  113. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -101
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1158 -0
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  132. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +38 -74
  133. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +100 -33
  137. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  138. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  139. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  140. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/IService.sol/IService.json} +169 -134
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +256 -25
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  153. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  154. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +261 -217
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  158. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +272 -26
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  167. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestService.sol/TestService.json +347 -130
  169. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  171. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  173. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +38 -140
  175. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  176. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  177. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  178. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  182. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Fee.sol/FeeLib.json +42 -11
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  194. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  195. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  197. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  199. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  200. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  201. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  202. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  203. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  205. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  207. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  208. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  209. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  210. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  211. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  213. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  214. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  215. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  216. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  217. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  218. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  219. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  220. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  221. package/contracts/components/Component.sol +253 -0
  222. package/contracts/components/Distribution.sol +210 -62
  223. package/contracts/components/IComponent.sol +76 -0
  224. package/contracts/components/IDistributionComponent.sol +43 -19
  225. package/contracts/components/IPoolComponent.sol +89 -47
  226. package/contracts/components/IProductComponent.sol +13 -11
  227. package/contracts/components/Pool.sol +225 -157
  228. package/contracts/components/Product.sol +137 -71
  229. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  230. package/contracts/instance/BundleManager.sol +127 -0
  231. package/contracts/instance/Cloneable.sol +51 -0
  232. package/contracts/instance/IInstance.sol +87 -42
  233. package/contracts/instance/IInstanceService.sol +72 -0
  234. package/contracts/instance/Instance.sol +311 -58
  235. package/contracts/instance/InstanceAccessManager.sol +527 -0
  236. package/contracts/instance/InstanceReader.sol +291 -0
  237. package/contracts/instance/InstanceService.sol +495 -0
  238. package/contracts/instance/InstanceServiceManager.sol +54 -0
  239. package/contracts/instance/ObjectManager.sol +82 -0
  240. package/contracts/instance/base/ComponentService.sol +121 -0
  241. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  242. package/contracts/instance/base/ILifecycle.sol +3 -3
  243. package/contracts/instance/base/KeyValueStore.sol +60 -41
  244. package/contracts/instance/base/Lifecycle.sol +12 -3
  245. package/contracts/instance/module/IAccess.sol +54 -0
  246. package/contracts/instance/module/IBundle.sol +23 -0
  247. package/contracts/instance/module/IComponents.sol +41 -0
  248. package/contracts/instance/module/IDistribution.sol +41 -0
  249. package/contracts/instance/module/IPolicy.sol +72 -0
  250. package/contracts/instance/module/IRisk.sol +11 -0
  251. package/contracts/instance/module/ISetup.sol +33 -0
  252. package/contracts/instance/module/ITreasury.sol +23 -0
  253. package/contracts/instance/service/ApplicationService.sol +350 -0
  254. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  255. package/contracts/instance/service/BundleService.sol +431 -0
  256. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  257. package/contracts/instance/service/ClaimService.sol +151 -0
  258. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  259. package/contracts/instance/service/DistributionService.sol +402 -26
  260. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  261. package/contracts/instance/service/IApplicationService.sol +82 -0
  262. package/contracts/instance/service/IBundleService.sol +93 -0
  263. package/contracts/instance/service/IClaimService.sol +61 -0
  264. package/contracts/instance/service/IDistributionService.sol +88 -1
  265. package/contracts/instance/service/IPolicyService.sol +72 -0
  266. package/contracts/instance/service/IPoolService.sol +80 -18
  267. package/contracts/instance/service/IProductService.sol +9 -76
  268. package/contracts/instance/service/PolicyService.sol +362 -0
  269. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  270. package/contracts/instance/service/PoolService.sol +244 -90
  271. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  272. package/contracts/instance/service/ProductService.sol +136 -435
  273. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  274. package/contracts/registry/ChainNft.sol +87 -36
  275. package/contracts/registry/IRegistry.sol +68 -24
  276. package/contracts/registry/IRegistryService.sol +68 -0
  277. package/contracts/registry/ITransferInterceptor.sol +7 -0
  278. package/contracts/registry/Registry.sol +372 -286
  279. package/contracts/registry/RegistryAccessManager.sol +216 -0
  280. package/contracts/registry/RegistryService.sol +282 -0
  281. package/contracts/registry/RegistryServiceManager.sol +62 -0
  282. package/contracts/registry/ReleaseManager.sol +324 -0
  283. package/contracts/registry/TokenRegistry.sol +116 -0
  284. package/contracts/shared/ContractDeployerLib.sol +72 -0
  285. package/contracts/shared/ERC165.sol +14 -8
  286. package/contracts/shared/INftOwnable.sol +23 -0
  287. package/contracts/shared/IPolicyHolder.sol +26 -0
  288. package/contracts/shared/IRegisterable.sol +10 -19
  289. package/contracts/shared/IRegistryLinked.sol +12 -0
  290. package/contracts/shared/IService.sol +16 -0
  291. package/contracts/shared/IVersionable.sol +38 -37
  292. package/contracts/shared/NftOwnable.sol +120 -0
  293. package/contracts/shared/PolicyHolder.sol +81 -0
  294. package/contracts/shared/ProxyManager.sol +169 -0
  295. package/contracts/shared/Registerable.sol +54 -66
  296. package/contracts/shared/RegistryLinked.sol +48 -0
  297. package/contracts/shared/Service.sol +72 -0
  298. package/contracts/shared/TokenHandler.sol +33 -0
  299. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  300. package/contracts/shared/Versionable.sol +38 -68
  301. package/contracts/test/TestFee.sol +2 -2
  302. package/contracts/test/TestRegisterable.sol +5 -6
  303. package/contracts/test/TestRoleId.sol +1 -1
  304. package/contracts/test/TestService.sol +7 -14
  305. package/contracts/types/Amount.sol +60 -0
  306. package/contracts/types/Blocknumber.sol +1 -0
  307. package/contracts/types/ClaimId.sol +52 -0
  308. package/contracts/types/DistributorType.sol +55 -0
  309. package/contracts/types/Fee.sol +15 -7
  310. package/contracts/types/Key32.sol +8 -3
  311. package/contracts/types/NftId.sol +8 -0
  312. package/contracts/types/NftIdSet.sol +26 -24
  313. package/contracts/types/NumberId.sol +52 -0
  314. package/contracts/types/ObjectType.sol +40 -14
  315. package/contracts/types/PayoutId.sol +54 -0
  316. package/contracts/types/Referral.sol +89 -0
  317. package/contracts/types/RoleId.sol +68 -9
  318. package/contracts/types/Seconds.sol +54 -0
  319. package/contracts/types/StateId.sol +6 -1
  320. package/contracts/types/Timestamp.sol +17 -13
  321. package/contracts/types/UFixed.sol +129 -12
  322. package/contracts/types/Version.sol +14 -1
  323. package/package.json +6 -5
  324. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  325. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  326. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  329. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  331. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  333. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  335. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  337. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  339. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  341. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  343. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  346. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  348. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  350. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  352. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  354. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  356. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  358. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  359. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  360. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  361. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  362. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  363. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  364. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  365. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  366. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  367. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -376
  368. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  369. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  370. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  371. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  372. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  373. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  376. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  378. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  380. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  381. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  383. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  384. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  385. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  388. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  389. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  391. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  393. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  394. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  396. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  397. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  398. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  399. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  400. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  402. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  403. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  404. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  405. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  406. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  407. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  408. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  409. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  410. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  411. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  412. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  413. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  414. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  415. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -531
  416. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  417. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  418. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  419. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  420. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  421. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  422. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  423. package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +0 -4
  424. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +0 -178
  425. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  426. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  427. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  428. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  429. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  430. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  431. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  432. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  433. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  434. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  435. package/contracts/components/BaseComponent.sol +0 -94
  436. package/contracts/components/IBaseComponent.sol +0 -19
  437. package/contracts/experiment/errors/Require.sol +0 -38
  438. package/contracts/experiment/errors/Revert.sol +0 -44
  439. package/contracts/experiment/inheritance/A.sol +0 -53
  440. package/contracts/experiment/inheritance/B.sol +0 -28
  441. package/contracts/experiment/inheritance/C.sol +0 -34
  442. package/contracts/experiment/inheritance/IA.sol +0 -13
  443. package/contracts/experiment/inheritance/IB.sol +0 -10
  444. package/contracts/experiment/inheritance/IC.sol +0 -12
  445. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  446. package/contracts/experiment/statemachine/ISM.sol +0 -25
  447. package/contracts/experiment/statemachine/README.md +0 -112
  448. package/contracts/experiment/statemachine/SM.sol +0 -57
  449. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  450. package/contracts/experiment/types/TypeA.sol +0 -47
  451. package/contracts/experiment/types/TypeB.sol +0 -29
  452. package/contracts/instance/IInstanceLinked.sol +0 -8
  453. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  454. package/contracts/instance/base/IInstanceBase.sol +0 -22
  455. package/contracts/instance/base/IService.sol +0 -15
  456. package/contracts/instance/base/InstanceBase.sol +0 -91
  457. package/contracts/instance/base/ModuleBase.sol +0 -57
  458. package/contracts/instance/base/ServiceBase.sol +0 -37
  459. package/contracts/instance/module/access/Access.sol +0 -149
  460. package/contracts/instance/module/access/IAccess.sol +0 -53
  461. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  462. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  463. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  464. package/contracts/instance/module/component/IComponent.sol +0 -28
  465. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  466. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  467. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  468. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  469. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  470. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  471. package/contracts/instance/module/risk/IRisk.sol +0 -26
  472. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  473. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  474. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  475. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  476. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  477. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  478. package/contracts/registry/IChainNft.sol +0 -21
  479. package/contracts/registry/IRegistryLinked.sol +0 -8
  480. package/contracts/shared/IOwnable.sol +0 -6
  481. package/contracts/shared/Proxy.sol +0 -83
  482. package/contracts/test/TestDistribution.sol +0 -21
  483. package/contracts/test/TestPool.sol +0 -25
  484. package/contracts/test/TestProduct.sol +0 -72
  485. package/contracts/types/ReferralId.sol +0 -48
@@ -1,149 +1,303 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
+ import {Pool} from "../../components/Pool.sol";
4
5
  import {IRegistry} from "../../registry/IRegistry.sol";
5
6
  import {IInstance} from "../../instance/IInstance.sol";
6
- import {IBundle} from "../../instance/module/bundle/IBundle.sol";
7
- import {ITreasury, ITreasuryModule, TokenHandler} from "../../instance/module/treasury/ITreasury.sol";
7
+ import {IBundle} from "../../instance/module/IBundle.sol";
8
+ import {TokenHandler} from "../../instance/module/ITreasury.sol";
9
+ import {IComponents} from "../module/IComponents.sol";
10
+ import {IPolicy} from "../module/IPolicy.sol";
8
11
 
9
12
  import {IVersionable} from "../../shared/IVersionable.sol";
10
13
  import {Versionable} from "../../shared/Versionable.sol";
14
+ import {INftOwnable} from "../../shared/INftOwnable.sol";
11
15
 
12
- import {NftId, NftIdLib} from "../../types/NftId.sol";
13
- import {POOL, BUNDLE} from "../../types/ObjectType.sol";
14
- import {Fee} from "../../types/Fee.sol";
16
+ import {Amount} from "../../types/Amount.sol";
17
+ import {Fee, FeeLib} from "../../types/Fee.sol";
18
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
19
+ import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
20
+ import {PUBLIC_ROLE, POOL_OWNER_ROLE, POLICY_SERVICE_ROLE, RoleId} from "../../types/RoleId.sol";
21
+ import {Fee, FeeLib} from "../../types/Fee.sol";
22
+ import {Version, VersionLib} from "../../types/Version.sol";
23
+ import {KEEP_STATE, StateId} from "../../types/StateId.sol";
24
+ import {Seconds} from "../../types/Seconds.sol";
25
+ import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
15
26
  import {Version, VersionLib} from "../../types/Version.sol";
16
27
 
17
- import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
28
+ import {IService} from "../../shared/IService.sol";
29
+ import {Service} from "../../shared/Service.sol";
30
+ import {BundleManager} from "../BundleManager.sol";
31
+ import {ComponentService} from "../base/ComponentService.sol";
32
+ import {IBundleService} from "./IBundleService.sol";
18
33
  import {IPoolService} from "./IPoolService.sol";
34
+ import {IRegistryService} from "../../registry/IRegistryService.sol";
35
+ import {InstanceService} from "../InstanceService.sol";
36
+ import {InstanceReader} from "../InstanceReader.sol";
37
+ import {IComponent} from "../../components/IComponent.sol";
38
+ import {IPoolComponent} from "../../components/IPoolComponent.sol";
19
39
 
40
+ string constant POOL_SERVICE_NAME = "PoolService";
20
41
 
21
- contract PoolService is ComponentServiceBase, IPoolService {
42
+ contract PoolService is
43
+ ComponentService,
44
+ IPoolService
45
+ {
22
46
  using NftIdLib for NftId;
23
47
 
24
- string public constant NAME = "PoolService";
48
+ IBundleService internal _bundleService;
49
+
50
+ function _initialize(
51
+ address owner,
52
+ bytes memory data
53
+ )
54
+ internal
55
+ initializer
56
+ virtual override
57
+ {
58
+ address registryAddress;
59
+ address initialOwner;
60
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
61
+ // TODO while PoolService is not deployed in PoolServiceManager constructor
62
+ // owner is PoolServiceManager deployer
63
+ initializeService(registryAddress, address(0), owner);
64
+
65
+ _bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), getVersion().toMajorPart()));
66
+
67
+ registerInterface(type(IPoolService).interfaceId);
68
+ }
69
+
70
+ function getDomain() public pure override returns(ObjectType) {
71
+ return POOL();
72
+ }
25
73
 
26
- constructor(
27
- address registry,
28
- NftId registryNftId
29
- ) ComponentServiceBase(registry, registryNftId) // solhint-disable-next-line no-empty-blocks
74
+ function register(address poolAddress)
75
+ external
76
+ returns(NftId poolNftId)
30
77
  {
31
- _registerInterface(type(IPoolService).interfaceId);
78
+ (
79
+ IComponent component,
80
+ address owner,
81
+ IInstance instance,
82
+ NftId instanceNftId
83
+ ) = _checkComponentForRegistration(
84
+ poolAddress,
85
+ POOL(),
86
+ POOL_OWNER_ROLE());
87
+
88
+ IPoolComponent pool = IPoolComponent(poolAddress);
89
+ IRegistry.ObjectInfo memory registryInfo = getRegistryService().registerPool(pool, owner);
90
+ pool.linkToRegisteredNftId();
91
+ poolNftId = registryInfo.nftId;
92
+
93
+ // amend component info with pool specific token handler
94
+ IComponents.ComponentInfo memory componentInfo = pool.getComponentInfo();
95
+ componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
96
+
97
+ // save amended component info with instance
98
+ instance.createPoolSetup(poolNftId, componentInfo);
99
+
100
+ bytes4[][] memory selectors = new bytes4[][](2);
101
+ selectors[0] = new bytes4[](1);
102
+ selectors[1] = new bytes4[](1);
103
+
104
+ selectors[0][0] = IPoolComponent.setFees.selector;
105
+ selectors[1][0] = IPoolComponent.verifyApplication.selector;
106
+
107
+ RoleId[] memory roles = new RoleId[](2);
108
+ roles[0] = POOL_OWNER_ROLE();
109
+ roles[1] = POLICY_SERVICE_ROLE();
110
+
111
+ getInstanceService().createGifTarget(
112
+ instanceNftId,
113
+ poolAddress,
114
+ pool.getName(),
115
+ selectors,
116
+ roles);
32
117
  }
33
118
 
34
- function getVersion()
35
- public
36
- pure
37
- virtual override (IVersionable, Versionable)
38
- returns(Version)
119
+
120
+ function setMaxCapitalAmount(uint256 maxCapitalAmount)
121
+ external
122
+ virtual
39
123
  {
40
- return VersionLib.toVersion(3,0,0);
124
+ (NftId poolNftId, IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
125
+ InstanceReader instanceReader = instance.getInstanceReader();
126
+
127
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
128
+ IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
129
+ uint256 previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
130
+
131
+ poolInfo.maxCapitalAmount = maxCapitalAmount;
132
+ componentInfo.data = abi.encode(poolInfo);
133
+ instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
134
+
135
+ emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
41
136
  }
42
137
 
43
- function getName() external pure override returns(string memory name) {
44
- return NAME;
138
+ function setBundleOwnerRole(RoleId bundleOwnerRole)
139
+ external
140
+ virtual
141
+ {
142
+ (NftId poolNftId, IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
143
+ InstanceReader instanceReader = instance.getInstanceReader();
144
+
145
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
146
+ IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
147
+
148
+ // bundle owner role may only be set once per pool
149
+ if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
150
+ revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
151
+ }
152
+
153
+ poolInfo.bundleOwnerRole = bundleOwnerRole;
154
+ componentInfo.data = abi.encode(poolInfo);
155
+ instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
156
+
157
+ emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
45
158
  }
46
159
 
160
+
47
161
  function setFees(
48
162
  Fee memory poolFee,
49
163
  Fee memory stakingFee,
50
164
  Fee memory performanceFee
51
165
  )
52
166
  external
53
- override
167
+ virtual
54
168
  {
55
- (IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
56
-
57
- NftId productNftId = instance.getProductNftId(poolInfo.nftId);
58
- ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(productNftId);
59
- treasuryInfo.poolFee = poolFee;
60
- treasuryInfo.stakingFee = stakingFee;
61
- treasuryInfo.performanceFee = performanceFee;
62
- instance.setTreasuryInfo(productNftId, treasuryInfo);
169
+ (NftId poolNftId, IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
170
+ InstanceReader instanceReader = instance.getInstanceReader();
171
+
172
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
173
+ IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
174
+
175
+ poolInfo.poolFee = poolFee;
176
+ poolInfo.stakingFee = stakingFee;
177
+ poolInfo.performanceFee = performanceFee;
178
+ componentInfo.data = abi.encode(poolInfo);
179
+ instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
180
+
181
+ // TODO add logging
63
182
  }
64
183
 
184
+
65
185
  function createBundle(
66
- address owner,
67
- Fee memory fee,
68
- uint256 stakingAmount,
69
- uint256 lifetime,
70
- bytes calldata filter
186
+ address owner, // initial bundle owner
187
+ Fee memory fee, // fees deducted from premium that go to bundle owner
188
+ Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
189
+ Seconds lifetime, // initial duration for which new policies are covered
190
+ bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
71
191
  )
72
- external
73
- override
192
+ external
193
+ virtual
74
194
  returns(NftId bundleNftId)
75
195
  {
76
- (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
196
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
197
+ InstanceReader instanceReader = instance.getInstanceReader();
77
198
 
78
- // register bundle with registry
79
- NftId poolNftId = info.nftId;
80
- bundleNftId = _registry.registerObjectForInstance(
81
- poolNftId,
82
- BUNDLE(),
83
- owner,
84
- "");
199
+ // TODO add implementation that takes care of staking fees
200
+ Amount stakingAfterFeesAmount = stakingAmount;
85
201
 
86
- // create bundle info in instance
87
- instance.createBundleInfo(
88
- bundleNftId,
202
+ bundleNftId = _bundleService.create(
203
+ instance,
89
204
  poolNftId,
205
+ owner,
90
206
  fee,
91
- stakingAmount,
207
+ stakingAfterFeesAmount,
92
208
  lifetime,
93
209
  filter);
94
210
 
95
- // add bundle to pool in instance
96
- instance.addBundleToPool(
97
- bundleNftId,
98
- poolNftId,
99
- stakingAmount);
211
+ emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
212
+ }
100
213
 
101
- // collect capital
102
- _processStakingByTreasury(
103
- instance,
104
- poolNftId,
105
- bundleNftId,
106
- stakingAmount);
107
214
 
108
- // TODO add logging
215
+ function closeBundle(NftId bundleNftId)
216
+ external
217
+ virtual
218
+ {
219
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
220
+
221
+ // TODO book keeping for pool collateral released outside of retention level
222
+
223
+ // releasing collateral in bundle
224
+ _bundleService.close(instance, bundleNftId);
225
+
226
+ // TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
227
+
228
+ emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
109
229
  }
110
230
 
111
- function setBundleFee(
112
- NftId bundleNftId,
113
- Fee memory fee
231
+
232
+ function lockCollateral(
233
+ IInstance instance,
234
+ NftId productNftId,
235
+ NftId applicationNftId,
236
+ IPolicy.PolicyInfo memory applicationInfo,
237
+ uint256 premiumAmount // premium amount after product and distribution fees
114
238
  )
115
239
  external
116
- override
240
+ virtual
241
+ // TODO add restricted and granting for policy service
117
242
  {
118
- (IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
119
- IBundle.BundleInfo memory bundleInfo = instance.getBundleInfo(bundleNftId);
120
- require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
121
- require(poolInfo.nftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
122
- bundleInfo.fee = fee;
123
- instance.setBundleInfo(bundleNftId, bundleInfo);
243
+ InstanceReader instanceReader = instance.getInstanceReader();
244
+ NftId poolNftId = instanceReader.getProductSetupInfo(productNftId).poolNftId;
245
+ NftId bundleNftId = applicationInfo.bundleNftId;
246
+
247
+ // TODO move this check to application creation and don't repeat this here
248
+ // ensure that pool for bundle from application matches with pool for product of application
249
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
250
+ if(bundleInfo.poolNftId != poolNftId) {
251
+ revert ErrorPoolServiceBundlePoolMismatch(bundleInfo.poolNftId, poolNftId);
252
+ }
253
+
254
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
255
+ IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
256
+
257
+ // TODO add correct required collateral calculation (collateralization level mibht be != 1, retention level might be < 1)
258
+ uint256 collateralAmount = applicationInfo.sumInsuredAmount;
259
+
260
+ // TODO add correct net premium calculation (pool fee might be > 0)
261
+ uint256 premiumAfterPoolFeeAmount = premiumAmount;
262
+
263
+ // lock collateral amount from involvedd bundle
264
+ _bundleService.lockCollateral(
265
+ instance,
266
+ applicationNftId,
267
+ bundleNftId,
268
+ collateralAmount,
269
+ premiumAfterPoolFeeAmount);
270
+
271
+ // also verify/confirm application by pool if necessary
272
+ if(poolInfo.isVerifyingApplications) {
273
+ address poolAddress = getRegistry().getObjectInfo(poolNftId).objectAddress;
274
+ IPoolComponent(poolAddress).verifyApplication(
275
+ applicationNftId,
276
+ applicationInfo.applicationData,
277
+ bundleNftId,
278
+ bundleInfo.filter,
279
+ collateralAmount);
280
+ }
124
281
  }
125
282
 
126
283
 
127
- function _processStakingByTreasury(
128
- IInstance instance,
129
- NftId poolNftId,
130
- NftId bundleNftId,
131
- uint256 stakingAmount
284
+ /// @dev releases the remaining collateral linked to the specified policy
285
+ /// may only be called by the policy service for unlocked pool components
286
+ function releaseCollateral(
287
+ IInstance instance,
288
+ NftId policyNftId,
289
+ IPolicy.PolicyInfo memory policyInfo
132
290
  )
133
- internal
291
+ external
292
+ virtual
293
+ // TODO add restricted and granting for policy service
134
294
  {
135
- // process token transfer(s)
136
- if(stakingAmount > 0) {
137
- NftId productNftId = instance.getProductNftId(poolNftId);
138
- TokenHandler tokenHandler = instance.getTokenHandler(productNftId);
139
- address bundleOwner = _registry.getOwner(bundleNftId);
140
- address poolWallet = instance.getComponentWallet(poolNftId);
141
-
142
- tokenHandler.transfer(
143
- bundleOwner,
144
- poolWallet,
145
- stakingAmount
146
- );
147
- }
295
+ // release collateral from involved bundle
296
+ _bundleService.releaseCollateral(
297
+ instance,
298
+ policyNftId,
299
+ policyInfo.bundleNftId,
300
+ policyInfo.sumInsuredAmount);
148
301
  }
302
+
149
303
  }
@@ -0,0 +1,51 @@
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 "../../types/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 registryAddress
18
+ )
19
+ ProxyManager(registryAddress)
20
+ {
21
+ PoolService poolSrv = new PoolService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(poolSrv),
25
+ data);
26
+
27
+ _poolService = PoolService(address(versionable));
28
+
29
+ // TODO `this` must have a role or own nft to register service
30
+ //Registry registry = Registry(registryAddress);
31
+ //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _poolService.getMajorVersion());
32
+ //RegistryService registryService = RegistryService(registryServiceAddress);
33
+ //registryService.registerService(_poolService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_poolService));
40
+ }
41
+
42
+ //--- view functions ----------------------------------------------------//
43
+ function getPoolService()
44
+ external
45
+ view
46
+ returns (PoolService poolService)
47
+ {
48
+ return _poolService;
49
+ }
50
+
51
+ }