@etherisc/gif-next 0.0.2-a9ccad5-356 → 0.0.2-a9f5983-610

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 (347) hide show
  1. package/README.md +73 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +774 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +758 -192
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +103 -109
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +725 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +814 -60
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +592 -9
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +833 -321
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +461 -149
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -49
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  21. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +911 -115
  23. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +178 -165
  25. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  26. package/artifacts/contracts/instance/Instance.sol/Instance.json +797 -1007
  27. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +211 -144
  29. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +70 -101
  31. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +395 -330
  33. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +297 -116
  35. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -19
  37. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  38. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +181 -180
  39. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  43. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  45. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
  47. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  54. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  55. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  57. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  58. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  59. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  60. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  61. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  63. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  65. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +434 -215
  67. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +316 -83
  69. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +200 -204
  71. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  73. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → instance/service/IClaimService.sol/IClaimService.json} +154 -124
  75. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +197 -163
  77. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  79. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +24 -416
  81. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +30 -417
  83. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  85. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  87. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +178 -511
  89. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +293 -108
  91. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +190 -571
  93. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +286 -125
  95. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  96. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  97. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  98. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +225 -133
  99. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  100. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +149 -217
  101. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  102. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/Registry.sol/Registry.json +238 -235
  104. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  105. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  106. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  107. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +195 -322
  108. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
  110. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  111. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  112. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
  114. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  115. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  116. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  117. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  118. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  119. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  120. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  121. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  122. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  123. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  124. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  125. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IService.sol/IService.json +23 -186
  127. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  129. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  131. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  132. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  133. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  134. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  135. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  137. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  138. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  139. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Service.sol/Service.json +120 -174
  141. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  142. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  143. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  144. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  146. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  149. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  151. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestService.sol/TestService.json +141 -231
  153. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  157. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  158. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  159. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  162. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  163. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  165. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  167. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  168. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  170. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  171. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  172. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  175. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  177. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  179. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  181. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  183. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  185. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  188. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  192. package/contracts/components/Component.sol +221 -0
  193. package/contracts/components/Distribution.sol +209 -64
  194. package/contracts/components/IComponent.sol +68 -0
  195. package/contracts/components/IDistributionComponent.sol +59 -3
  196. package/contracts/components/IPoolComponent.sol +124 -39
  197. package/contracts/components/IProductComponent.sol +10 -5
  198. package/contracts/components/Pool.sol +283 -172
  199. package/contracts/components/Product.sol +125 -121
  200. package/contracts/instance/BundleManager.sol +8 -12
  201. package/contracts/instance/IInstance.sol +46 -10
  202. package/contracts/instance/IInstanceService.sol +30 -3
  203. package/contracts/instance/Instance.sol +99 -262
  204. package/contracts/instance/InstanceAccessManager.sol +87 -78
  205. package/contracts/instance/InstanceReader.sol +3 -25
  206. package/contracts/instance/InstanceService.sol +381 -123
  207. package/contracts/instance/InstanceServiceManager.sol +6 -9
  208. package/contracts/instance/ObjectManager.sol +8 -19
  209. package/contracts/instance/base/ComponentService.sol +134 -0
  210. package/contracts/instance/module/IAccess.sol +27 -18
  211. package/contracts/instance/module/IBundle.sol +2 -1
  212. package/contracts/instance/module/IPolicy.sol +6 -3
  213. package/contracts/instance/module/ISetup.sol +6 -4
  214. package/contracts/instance/service/ApplicationService.sol +269 -0
  215. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  216. package/contracts/instance/service/BundleService.sol +299 -0
  217. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  218. package/contracts/instance/service/ClaimService.sol +151 -0
  219. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  220. package/contracts/instance/service/DistributionService.sol +216 -27
  221. package/contracts/instance/service/DistributionServiceManager.sol +7 -10
  222. package/contracts/instance/service/IApplicationService.sol +83 -0
  223. package/contracts/instance/service/IBundleService.sol +55 -0
  224. package/contracts/instance/service/IClaimService.sol +61 -0
  225. package/contracts/instance/service/IDistributionService.sol +53 -0
  226. package/contracts/instance/service/IPolicyService.sol +90 -0
  227. package/contracts/instance/service/IPoolService.sol +2 -33
  228. package/contracts/instance/service/IProductService.sol +2 -72
  229. package/contracts/instance/service/PolicyService.sol +476 -0
  230. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  231. package/contracts/instance/service/PoolService.sol +34 -212
  232. package/contracts/instance/service/PoolServiceManager.sol +6 -9
  233. package/contracts/instance/service/ProductService.sol +123 -460
  234. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  235. package/contracts/registry/ChainNft.sol +1 -1
  236. package/contracts/registry/IRegistry.sol +37 -19
  237. package/contracts/registry/IRegistryService.sol +30 -13
  238. package/contracts/registry/Registry.sol +233 -217
  239. package/contracts/registry/RegistryAccessManager.sol +216 -0
  240. package/contracts/registry/RegistryService.sol +96 -171
  241. package/contracts/registry/RegistryServiceManager.sol +21 -39
  242. package/contracts/registry/ReleaseManager.sol +322 -0
  243. package/contracts/registry/TokenRegistry.sol +22 -17
  244. package/contracts/shared/ERC165.sol +14 -12
  245. package/contracts/shared/INftOwnable.sol +11 -10
  246. package/contracts/shared/IPolicyHolder.sol +26 -0
  247. package/contracts/shared/IRegisterable.sol +4 -6
  248. package/contracts/shared/IRegistryLinked.sol +12 -0
  249. package/contracts/shared/IService.sol +2 -1
  250. package/contracts/shared/IVersionable.sol +4 -47
  251. package/contracts/shared/NftOwnable.sol +66 -80
  252. package/contracts/shared/PolicyHolder.sol +81 -0
  253. package/contracts/shared/ProxyManager.sol +100 -25
  254. package/contracts/shared/Registerable.sol +16 -32
  255. package/contracts/shared/RegistryLinked.sol +48 -0
  256. package/contracts/shared/Service.sol +25 -22
  257. package/contracts/shared/Versionable.sol +4 -92
  258. package/contracts/test/TestRegisterable.sol +1 -1
  259. package/contracts/test/TestService.sol +4 -3
  260. package/contracts/types/ClaimId.sol +52 -0
  261. package/contracts/types/DistributorType.sol +2 -2
  262. package/contracts/types/ObjectType.sol +9 -5
  263. package/contracts/types/PayoutId.sol +54 -0
  264. package/contracts/types/RoleId.sol +19 -14
  265. package/contracts/types/Seconds.sol +54 -0
  266. package/contracts/types/Timestamp.sol +12 -13
  267. package/package.json +3 -3
  268. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  269. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  270. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  271. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  272. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  273. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  274. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  275. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  276. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  277. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  278. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  279. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  280. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  281. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  282. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  283. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  284. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  285. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  286. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  287. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  288. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  289. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  290. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  291. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  292. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  293. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  294. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  295. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  296. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  297. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  298. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  299. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  300. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  301. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  302. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  303. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  304. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  305. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  306. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  307. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  308. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  309. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  310. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  311. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  312. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  313. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  314. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  315. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  316. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  317. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  318. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  319. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  320. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  321. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  322. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  323. package/contracts/components/BaseComponent.sol +0 -129
  324. package/contracts/components/IBaseComponent.sol +0 -31
  325. package/contracts/experiment/cloning/Cloner.sol +0 -47
  326. package/contracts/experiment/errors/Require.sol +0 -38
  327. package/contracts/experiment/errors/Revert.sol +0 -44
  328. package/contracts/experiment/inheritance/A.sol +0 -53
  329. package/contracts/experiment/inheritance/B.sol +0 -28
  330. package/contracts/experiment/inheritance/C.sol +0 -34
  331. package/contracts/experiment/inheritance/IA.sol +0 -13
  332. package/contracts/experiment/inheritance/IB.sol +0 -10
  333. package/contracts/experiment/inheritance/IC.sol +0 -12
  334. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  335. package/contracts/experiment/statemachine/ISM.sol +0 -25
  336. package/contracts/experiment/statemachine/SM.sol +0 -57
  337. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  338. package/contracts/experiment/types/TypeA.sol +0 -47
  339. package/contracts/experiment/types/TypeB.sol +0 -29
  340. package/contracts/instance/AccessManagedSimple.sol +0 -115
  341. package/contracts/instance/AccessManagerSimple.sol +0 -692
  342. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  343. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  344. package/contracts/instance/base/IInstanceBase.sol +0 -23
  345. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  346. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  347. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -0,0 +1,299 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Pool} from "../../components/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 {TokenHandler} from "../../instance/module/ITreasury.sol";
9
+ import {ISetup} from "../module/ISetup.sol";
10
+ import {IPolicy} from "../module/IPolicy.sol";
11
+
12
+ import {IVersionable} from "../../shared/IVersionable.sol";
13
+ import {INftOwnable} from "../../shared/INftOwnable.sol";
14
+
15
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
16
+ import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
17
+ import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
18
+ import {Fee, FeeLib} from "../../types/Fee.sol";
19
+ import {KEEP_STATE, StateId} from "../../types/StateId.sol";
20
+ import {Seconds} from "../../types/Seconds.sol";
21
+ import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
22
+ import {Version, VersionLib} from "../../types/Version.sol";
23
+ import {Versionable} from "../../shared/Versionable.sol";
24
+
25
+ import {IService} from "../../shared/IService.sol";
26
+ import {Service} from "../../shared/Service.sol";
27
+ import {BundleManager} from "../BundleManager.sol";
28
+ import {ComponentService} from "../base/ComponentService.sol";
29
+ import {IBundleService} from "./IBundleService.sol";
30
+ import {IRegistryService} from "../../registry/IRegistryService.sol";
31
+ import {InstanceService} from "../InstanceService.sol";
32
+ import {InstanceReader} from "../InstanceReader.sol";
33
+
34
+ string constant BUNDLE_SERVICE_NAME = "BundleService";
35
+
36
+ contract BundleService is
37
+ ComponentService,
38
+ IBundleService
39
+ {
40
+ using NftIdLib for NftId;
41
+
42
+ string public constant NAME = "BundleService";
43
+
44
+ address internal _registryAddress;
45
+
46
+ function _initialize(
47
+ address owner,
48
+ bytes memory data
49
+ )
50
+ internal
51
+ initializer
52
+ virtual override
53
+ {
54
+ address registryAddress;
55
+ address initialOwner;
56
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
57
+ // TODO while PoolService is not deployed in PoolServiceManager constructor
58
+ // owner is PoolServiceManager deployer
59
+ initializeService(registryAddress, owner);
60
+ registerInterface(type(IBundleService).interfaceId);
61
+ }
62
+
63
+ function getDomain() public pure override(Service, IService) returns(ObjectType) {
64
+ return BUNDLE();
65
+ }
66
+
67
+ function createBundle(
68
+ address owner,
69
+ Fee memory fee,
70
+ uint256 stakingAmount,
71
+ Seconds lifetime,
72
+ bytes calldata filter
73
+ )
74
+ external
75
+ override
76
+ returns(NftId bundleNftId)
77
+ {
78
+ (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
79
+ InstanceReader instanceReader = instance.getInstanceReader();
80
+ NftId poolNftId = info.nftId;
81
+
82
+ IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
83
+ poolNftId,
84
+ fee,
85
+ filter,
86
+ stakingAmount,
87
+ 0,
88
+ stakingAmount,
89
+ lifetime,
90
+ zeroTimestamp(),
91
+ zeroTimestamp()
92
+ );
93
+
94
+ // register bundle with registry
95
+ bundleNftId = getRegistryService().registerBundle(
96
+ IRegistry.ObjectInfo(
97
+ zeroNftId(),
98
+ poolNftId,
99
+ BUNDLE(),
100
+ false, // intercepting property for bundles is defined on pool
101
+ address(0),
102
+ owner,
103
+ abi.encode(bundleInfo)
104
+ )
105
+ );
106
+
107
+ // create bundle info in instance
108
+ instance.createBundle(bundleNftId, bundleInfo);
109
+
110
+ BundleManager bundleManager = instance.getBundleManager();
111
+ bundleManager.add(bundleNftId);
112
+
113
+ _processStakingByTreasury(
114
+ instanceReader,
115
+ poolNftId,
116
+ bundleNftId,
117
+ stakingAmount);
118
+
119
+ // TODO add logging
120
+ }
121
+
122
+ function setBundleFee(
123
+ NftId bundleNftId,
124
+ Fee memory fee
125
+ )
126
+ external
127
+ override
128
+ {
129
+ (IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
130
+ InstanceReader instanceReader = instance.getInstanceReader();
131
+ NftId poolNftId = info.nftId;
132
+
133
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
134
+ require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
135
+ require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
136
+
137
+ bundleInfo.fee = fee;
138
+
139
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
140
+ }
141
+
142
+ function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state)
143
+ external
144
+ onlyService
145
+ {
146
+ IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
147
+ IInstance instance = IInstance(instanceInfo.objectAddress);
148
+ instance.updateBundle(bundleNftId, bundleInfo, state);
149
+ }
150
+
151
+ function lockBundle(NftId bundleNftId)
152
+ external
153
+ {
154
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
155
+ BundleManager bundleManager = instance.getBundleManager();
156
+ bundleManager.lock(bundleNftId);
157
+ }
158
+
159
+ function unlockBundle(NftId bundleNftId)
160
+ external
161
+ {
162
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
163
+ BundleManager bundleManager = instance.getBundleManager();
164
+ bundleManager.unlock(bundleNftId);
165
+ }
166
+
167
+ function lockCollateral(
168
+ IInstance instance,
169
+ NftId policyNftId,
170
+ NftId bundleNftId,
171
+ uint256 collateralAmount,
172
+ uint256 netPremiumAmount
173
+ )
174
+ external
175
+ onlyService
176
+ returns (
177
+ IBundle.BundleInfo memory bundleInfo
178
+ )
179
+ {
180
+ InstanceReader instanceReader = instance.getInstanceReader();
181
+ bundleInfo = instanceReader.getBundleInfo(bundleNftId);
182
+
183
+ // TODO add validation
184
+
185
+ // lock collateral
186
+ bundleInfo.lockedAmount += collateralAmount;
187
+ bundleInfo.balanceAmount += netPremiumAmount;
188
+
189
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
190
+
191
+ linkPolicy(instance, policyNftId);
192
+ }
193
+
194
+ function increaseBalance(IInstance instance,
195
+ NftId bundleNftId,
196
+ uint256 amount
197
+ )
198
+ external
199
+ onlyService
200
+ {
201
+ InstanceReader instanceReader = instance.getInstanceReader();
202
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
203
+
204
+ bundleInfo.balanceAmount += amount;
205
+
206
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
207
+ }
208
+
209
+ function closePolicy(IInstance instance,
210
+ NftId policyNftId,
211
+ NftId bundleNftId,
212
+ uint256 collateralAmount
213
+ )
214
+ external
215
+ onlyService
216
+ {
217
+ InstanceReader instanceReader = instance.getInstanceReader();
218
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
219
+
220
+ // lock collateral
221
+ bundleInfo.lockedAmount -= collateralAmount;
222
+
223
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
224
+
225
+ unlinkPolicy(instance, policyNftId);
226
+ }
227
+
228
+ /// @dev links policy to bundle
229
+ function linkPolicy(IInstance instance, NftId policyNftId)
230
+ internal
231
+ onlyService
232
+ {
233
+ InstanceReader instanceReader = instance.getInstanceReader();
234
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
235
+
236
+ // ensure policy has not yet been activated
237
+ if (policyInfo.activatedAt.gtz()) {
238
+ revert BundleManager.ErrorBundleManagerErrorPolicyAlreadyActivated(policyNftId);
239
+ }
240
+
241
+ BundleManager bundleManager = instance.getBundleManager();
242
+ bundleManager.linkPolicy(policyNftId);
243
+ }
244
+
245
+ /// @dev unlinks policy from bundle
246
+ function unlinkPolicy(IInstance instance, NftId policyNftId)
247
+ internal
248
+ onlyService
249
+ {
250
+ InstanceReader instanceReader = instance.getInstanceReader();
251
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
252
+
253
+ // ensure policy has no open claims
254
+ if (policyInfo.openClaimsCount > 0) {
255
+ revert BundleManager.ErrorBundleManagerPolicyWithOpenClaims(
256
+ policyNftId,
257
+ policyInfo.openClaimsCount);
258
+ }
259
+
260
+ // ensure policy is closeable
261
+ if ( TimestampLib.blockTimestamp() < policyInfo.expiredAt
262
+ && policyInfo.payoutAmount < policyInfo.sumInsuredAmount)
263
+ {
264
+ revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
265
+ }
266
+
267
+ BundleManager bundleManager = instance.getBundleManager();
268
+ bundleManager.unlinkPolicy(policyNftId);
269
+ }
270
+
271
+ function _processStakingByTreasury(
272
+ InstanceReader instanceReader,
273
+ NftId poolNftId,
274
+ NftId bundleNftId,
275
+ uint256 stakingAmount
276
+ )
277
+ internal
278
+ {
279
+ // process token transfer(s)
280
+ if(stakingAmount > 0) {
281
+ ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
282
+ TokenHandler tokenHandler = poolInfo.tokenHandler;
283
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
284
+ Fee memory stakingFee = poolInfo.stakingFee;
285
+
286
+ tokenHandler.transfer(
287
+ bundleOwner,
288
+ poolInfo.wallet,
289
+ stakingAmount
290
+ );
291
+
292
+
293
+ if (! FeeLib.feeIsZero(stakingFee)) {
294
+ (uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
295
+ // TODO: track staking fees in pool's state (issue #177)
296
+ }
297
+ }
298
+ }
299
+ }
@@ -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 {BundleService} from "./BundleService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {ObjectType, REGISTRY} from "../../types/ObjectType.sol";
10
+
11
+ contract BundleServiceManager is ProxyManager {
12
+
13
+ BundleService private _bundleService;
14
+
15
+ /// @dev initializes proxy manager with pool service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager(registryAddress)
20
+ {
21
+ BundleService bundleSrv = new BundleService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(bundleSrv),
25
+ data);
26
+
27
+ _bundleService = BundleService(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(), _bundleService.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 getBundleService()
44
+ external
45
+ view
46
+ returns (BundleService)
47
+ {
48
+ return _bundleService;
49
+ }
50
+
51
+ }
@@ -0,0 +1,151 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRisk} from "../module/IRisk.sol";
5
+ import {IService} from "./IApplicationService.sol";
6
+
7
+ import {IRegistry} from "../../registry/IRegistry.sol";
8
+ import {IProductComponent} from "../../components/IProductComponent.sol";
9
+ import {Product} from "../../components/Product.sol";
10
+ import {IPoolComponent} from "../../components/IPoolComponent.sol";
11
+ import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
12
+ import {IInstance} from "../IInstance.sol";
13
+ import {IPolicy} from "../module/IPolicy.sol";
14
+ import {IRisk} from "../module/IRisk.sol";
15
+ import {IBundle} from "../module/IBundle.sol";
16
+ import {IProductService} from "./IProductService.sol";
17
+ import {ITreasury} from "../module/ITreasury.sol";
18
+ import {ISetup} from "../module/ISetup.sol";
19
+
20
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
21
+
22
+ import {IVersionable} from "../../shared/IVersionable.sol";
23
+ import {Versionable} from "../../shared/Versionable.sol";
24
+
25
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
26
+ import {UFixed, UFixedLib} from "../../types/UFixed.sol";
27
+ import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
28
+ import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, CLAIM, BUNDLE} from "../../types/ObjectType.sol";
29
+ import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
30
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
31
+ import {Fee, FeeLib} from "../../types/Fee.sol";
32
+ import {ReferralId} from "../../types/Referral.sol";
33
+ import {RiskId} from "../../types/RiskId.sol";
34
+ import {StateId} from "../../types/StateId.sol";
35
+ import {ClaimId} from "../../types/ClaimId.sol";
36
+ import {PayoutId} from "../../types/PayoutId.sol";
37
+ import {Version, VersionLib} from "../../types/Version.sol";
38
+
39
+ import {ComponentService} from "../base/ComponentService.sol";
40
+ import {InstanceReader} from "../InstanceReader.sol";
41
+ import {IBundleService} from "./IBundleService.sol";
42
+ import {IClaimService} from "./IClaimService.sol";
43
+ import {IPoolService} from "./IPoolService.sol";
44
+ import {IService} from "../../shared/IService.sol";
45
+ import {Service} from "../../shared/Service.sol";
46
+
47
+
48
+ contract ClaimService is
49
+ ComponentService,
50
+ IClaimService
51
+ {
52
+
53
+
54
+ function _initialize(
55
+ address owner,
56
+ bytes memory data
57
+ )
58
+ internal
59
+ virtual override
60
+ initializer()
61
+ {
62
+ // TODO check this, might no longer be the way, refactor if necessary
63
+ address registryAddress;
64
+ address initialOwner;
65
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
66
+
67
+ initializeService(registryAddress, owner);
68
+ registerInterface(type(IClaimService).interfaceId);
69
+ }
70
+
71
+
72
+ function getDomain() public pure override(IService, Service) returns(ObjectType) {
73
+ return CLAIM();
74
+ }
75
+
76
+
77
+ function createClaim(
78
+ NftId policyNftId,
79
+ uint256 claimAmount,
80
+ bytes memory claimData
81
+ )
82
+ external
83
+ virtual
84
+ returns (ClaimId)
85
+ {
86
+
87
+ }
88
+
89
+
90
+ function confirmClaim(NftId policyNftId, ClaimId claimId, uint256 claimAmount)
91
+ external
92
+ virtual
93
+ // solhint-disable-next-line no-empty-blocks
94
+ {
95
+
96
+ }
97
+
98
+
99
+ function declineClaim(NftId policyNftId, ClaimId claimId)
100
+ external
101
+ virtual
102
+ // solhint-disable-next-line no-empty-blocks
103
+ {
104
+
105
+ }
106
+
107
+
108
+ function closeClaim(NftId policyNftId, ClaimId claimId)
109
+ external
110
+ virtual
111
+ // solhint-disable-next-line no-empty-blocks
112
+ {
113
+
114
+ }
115
+
116
+
117
+ function createPayout(
118
+ NftId policyNftId,
119
+ ClaimId claimId,
120
+ uint256 payoutAmount,
121
+ bytes calldata payoutData
122
+ )
123
+ external
124
+ virtual
125
+ returns(PayoutId payoutId)
126
+ // solhint-disable-next-line no-empty-blocks
127
+ {
128
+
129
+ }
130
+
131
+
132
+ function payoutExecuted(
133
+ NftId policyNftId,
134
+ PayoutId payoutId
135
+ )
136
+ external
137
+ virtual
138
+ // solhint-disable-next-line no-empty-blocks
139
+ {
140
+
141
+ }
142
+
143
+
144
+ // internal functions
145
+
146
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
147
+ IRegistry.ObjectInfo memory productInfo;
148
+ (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
149
+ product = Product(productInfo.objectAddress);
150
+ }
151
+ }
@@ -0,0 +1,35 @@
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 {ClaimService} from "./ClaimService.sol";
7
+
8
+ contract ClaimServiceManager is ProxyManager {
9
+
10
+ ClaimService private _claimService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address registryAddress
15
+ )
16
+ ProxyManager(registryAddress)
17
+ {
18
+ ClaimService svc = new ClaimService();
19
+ bytes memory data = abi.encode(registryAddress, address(this));
20
+ IVersionable versionable = deploy(
21
+ address(svc),
22
+ data);
23
+
24
+ _claimService = ClaimService(address(versionable));
25
+ }
26
+
27
+ //--- view functions ----------------------------------------------------//
28
+ function getClaimService()
29
+ external
30
+ view
31
+ returns (ClaimService)
32
+ {
33
+ return _claimService;
34
+ }
35
+ }