@etherisc/gif-next 0.0.2-ce8407f-016 → 0.0.2-ce87da3-250

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