@etherisc/gif-next 0.0.2-770fd3b-604 → 0.0.2-77a1ccf-469

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 (300) hide show
  1. package/README.md +8 -8
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +22 -145
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +79 -233
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +19 -92
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +57 -178
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +239 -104
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +23 -164
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +240 -155
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +27 -218
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
  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 +343 -308
  23. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +19 -184
  25. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  26. package/artifacts/contracts/instance/Instance.sol/Instance.json +469 -466
  27. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +2 -2
  29. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +79 -110
  31. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +70 -284
  33. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +196 -113
  35. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
  37. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +18 -220
  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/IBundle.sol/IBundle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  52. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +182 -331
  54. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  55. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  56. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +54 -276
  58. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  59. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +182 -107
  60. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  62. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  64. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +645 -268
  66. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +300 -109
  68. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +124 -206
  70. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +26 -191
  72. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
  74. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +369 -167
  76. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +25 -290
  78. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +12 -177
  80. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +12 -177
  82. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +65 -443
  84. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +188 -141
  86. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +42 -272
  88. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +179 -104
  90. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +42 -272
  92. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +179 -104
  94. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  95. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  96. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  97. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +71 -180
  98. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  99. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  100. package/artifacts/contracts/registry/Registry.sol/Registry.json +7 -7
  101. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  102. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  103. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  104. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +90 -264
  105. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +182 -113
  107. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  108. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
  109. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +34 -67
  111. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  112. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  113. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  114. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  115. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -30
  116. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  117. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  118. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -30
  119. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  120. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -21
  121. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  122. package/artifacts/contracts/shared/IService.sol/IService.json +12 -177
  123. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
  125. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +10 -62
  127. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  128. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -23
  129. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +171 -88
  131. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +11 -74
  133. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  134. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -23
  135. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  136. package/artifacts/contracts/shared/Service.sol/Service.json +13 -215
  137. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  138. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  139. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  140. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -150
  142. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  143. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  144. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +11 -74
  145. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  147. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestService.sol/TestService.json +31 -269
  149. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +6 -188
  153. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  154. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  155. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  156. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  157. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  158. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  159. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  161. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  163. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  164. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  166. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  167. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  168. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  171. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  172. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  173. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  175. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  177. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  179. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  180. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  181. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  184. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  188. package/contracts/components/Component.sol +69 -84
  189. package/contracts/components/Distribution.sol +26 -31
  190. package/contracts/components/IComponent.sol +34 -16
  191. package/contracts/components/IDistributionComponent.sol +1 -22
  192. package/contracts/components/IPoolComponent.sol +89 -25
  193. package/contracts/components/IProductComponent.sol +3 -2
  194. package/contracts/components/Pool.sol +216 -92
  195. package/contracts/components/Product.sol +36 -25
  196. package/contracts/instance/BundleManager.sol +1 -1
  197. package/contracts/instance/IInstance.sol +7 -1
  198. package/contracts/instance/Instance.sol +17 -7
  199. package/contracts/instance/InstanceService.sol +67 -10
  200. package/contracts/instance/InstanceServiceManager.sol +1 -1
  201. package/contracts/instance/module/IBundle.sol +2 -1
  202. package/contracts/instance/module/IDistribution.sol +2 -0
  203. package/contracts/instance/module/IPolicy.sol +30 -3
  204. package/contracts/instance/module/ISetup.sol +5 -6
  205. package/contracts/instance/service/ApplicationService.sol +138 -57
  206. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  207. package/contracts/instance/service/BundleService.sol +4 -3
  208. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  209. package/contracts/instance/service/ClaimService.sol +151 -0
  210. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  211. package/contracts/instance/service/DistributionService.sol +146 -26
  212. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  213. package/contracts/instance/service/IApplicationService.sol +9 -9
  214. package/contracts/instance/service/IBundleService.sol +3 -2
  215. package/contracts/instance/service/IClaimService.sol +61 -0
  216. package/contracts/instance/service/IDistributionService.sol +23 -2
  217. package/contracts/instance/service/IPolicyService.sol +17 -35
  218. package/contracts/instance/service/PolicyService.sol +47 -169
  219. package/contracts/instance/service/PolicyServiceManager.sol +2 -2
  220. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  221. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  222. package/contracts/registry/IRegistryService.sol +10 -8
  223. package/contracts/registry/Registry.sol +3 -1
  224. package/contracts/registry/RegistryService.sol +62 -40
  225. package/contracts/registry/RegistryServiceManager.sol +13 -13
  226. package/contracts/registry/ReleaseManager.sol +18 -28
  227. package/contracts/registry/TokenRegistry.sol +13 -10
  228. package/contracts/shared/ERC165.sol +2 -1
  229. package/contracts/shared/INftOwnable.sol +4 -9
  230. package/contracts/shared/IRegistryLinked.sol +0 -3
  231. package/contracts/shared/IService.sol +2 -0
  232. package/contracts/shared/IVersionable.sol +4 -47
  233. package/contracts/shared/NftOwnable.sol +10 -80
  234. package/contracts/shared/ProxyManager.sol +98 -24
  235. package/contracts/shared/Registerable.sol +3 -10
  236. package/contracts/shared/RegistryLinked.sol +10 -26
  237. package/contracts/shared/Service.sol +10 -12
  238. package/contracts/shared/Versionable.sol +1 -90
  239. package/contracts/types/ClaimId.sol +52 -0
  240. package/contracts/types/ObjectType.sol +4 -4
  241. package/contracts/types/PayoutId.sol +54 -0
  242. package/contracts/types/RoleId.sol +10 -5
  243. package/contracts/types/Seconds.sol +54 -0
  244. package/contracts/types/Timestamp.sol +12 -13
  245. package/package.json +1 -1
  246. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  247. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  248. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  249. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  250. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  251. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  252. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  253. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  254. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  255. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  256. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  257. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  258. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  259. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  260. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  261. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  262. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  263. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  264. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  265. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  266. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  267. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  268. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  269. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  270. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  271. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  272. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  273. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  274. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  275. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  276. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  277. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  278. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  279. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  280. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  281. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  282. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  283. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  284. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  285. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  286. package/contracts/experiment/cloning/Cloner.sol +0 -47
  287. package/contracts/experiment/errors/Require.sol +0 -38
  288. package/contracts/experiment/errors/Revert.sol +0 -44
  289. package/contracts/experiment/inheritance/A.sol +0 -53
  290. package/contracts/experiment/inheritance/B.sol +0 -28
  291. package/contracts/experiment/inheritance/C.sol +0 -34
  292. package/contracts/experiment/inheritance/IA.sol +0 -13
  293. package/contracts/experiment/inheritance/IB.sol +0 -10
  294. package/contracts/experiment/inheritance/IC.sol +0 -12
  295. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  296. package/contracts/experiment/statemachine/ISM.sol +0 -25
  297. package/contracts/experiment/statemachine/SM.sol +0 -57
  298. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  299. package/contracts/experiment/types/TypeA.sol +0 -47
  300. package/contracts/experiment/types/TypeB.sol +0 -29
@@ -22,11 +22,12 @@ import {TokenHandler} from "../../shared/TokenHandler.sol";
22
22
  import {IVersionable} from "../../shared/IVersionable.sol";
23
23
  import {Versionable} from "../../shared/Versionable.sol";
24
24
 
25
+ import {Seconds} from "../../types/Seconds.sol";
25
26
  import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
26
27
  import {UFixed, UFixedLib} from "../../types/UFixed.sol";
27
28
  import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
28
- import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
29
- import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
29
+ import {ObjectType, DISTRIBUTION, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
30
+ import {APPLIED, REVOKED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
30
31
  import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
31
32
  import {Fee, FeeLib} from "../../types/Fee.sol";
32
33
  import {ReferralId} from "../../types/Referral.sol";
@@ -38,6 +39,7 @@ import {ComponentService} from "../base/ComponentService.sol";
38
39
  import {InstanceReader} from "../InstanceReader.sol";
39
40
  import {IApplicationService} from "./IApplicationService.sol";
40
41
  import {IBundleService} from "./IBundleService.sol";
42
+ import {IDistributionService} from "./IDistributionService.sol";
41
43
  import {IPoolService} from "./IPoolService.sol";
42
44
  import {IService} from "../../shared/IService.sol";
43
45
  import {Service} from "../../shared/Service.sol";
@@ -47,14 +49,14 @@ contract ApplicationService is
47
49
  ComponentService,
48
50
  IApplicationService
49
51
  {
52
+ IDistributionService internal _distributionService;
50
53
 
51
-
52
- function initialize(
54
+ function _initialize(
53
55
  address owner,
54
56
  bytes memory data
55
57
  )
56
- public
57
- virtual
58
+ internal
59
+ virtual override
58
60
  initializer()
59
61
  {
60
62
  // TODO check this, might no longer be the way, refactor if necessary
@@ -64,20 +66,27 @@ contract ApplicationService is
64
66
 
65
67
  initializeService(registryAddress, owner);
66
68
  registerInterface(type(IApplicationService).interfaceId);
69
+
70
+ _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), getMajorVersion()));
71
+ }
72
+
73
+
74
+ function getDomain() public pure override(IService, Service) returns(ObjectType) {
75
+ return APPLICATION();
67
76
  }
68
77
 
69
78
 
70
79
  function create(
71
80
  address applicationOwner,
72
81
  RiskId riskId,
82
+ uint256 sumInsuredAmount,
83
+ Seconds lifetime,
73
84
  NftId bundleNftId,
74
85
  ReferralId referralId,
75
- uint256 sumInsuredAmount,
76
- uint256 lifetime,
77
86
  bytes memory applicationData
78
87
  )
79
88
  external
80
- virtual override
89
+ virtual
81
90
  returns (NftId applicationNftId)
82
91
  {
83
92
  (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
@@ -95,7 +104,9 @@ contract ApplicationService is
95
104
  )
96
105
  );
97
106
 
98
- (uint256 premiumAmount,,,,) = calculatePremium(
107
+ // (uint256 premiumAmount,,,,,) = calculatePremium(
108
+ IPolicy.Premium memory premium = calculatePremium(
109
+ productInfo.nftId,
99
110
  riskId,
100
111
  sumInsuredAmount,
101
112
  lifetime,
@@ -110,7 +121,7 @@ contract ApplicationService is
110
121
  referralId,
111
122
  riskId,
112
123
  sumInsuredAmount,
113
- premiumAmount,
124
+ premium.premiumAmount,
114
125
  0,
115
126
  lifetime,
116
127
  applicationData,
@@ -123,8 +134,8 @@ contract ApplicationService is
123
134
  zeroTimestamp()
124
135
  );
125
136
 
126
- instance.createPolicy(applicationNftId, policyInfo);
127
- instance.updatePolicyState(applicationNftId, APPLIED());
137
+ instance.createApplication(applicationNftId, policyInfo);
138
+ instance.updateApplicationState(applicationNftId, APPLIED());
128
139
 
129
140
  // TODO: add logging
130
141
  }
@@ -142,7 +153,7 @@ contract ApplicationService is
142
153
  }
143
154
 
144
155
 
145
- function ajust(
156
+ function adjust(
146
157
  NftId applicationNftId,
147
158
  RiskId riskId,
148
159
  NftId bundleNftId,
@@ -157,18 +168,20 @@ contract ApplicationService is
157
168
 
158
169
  }
159
170
 
160
- function revoke(NftId policyNftId)
171
+ function revoke(NftId applicationNftId)
161
172
  external
162
173
  virtual override
163
174
  {
164
-
175
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
176
+ instance.updateApplicationState(applicationNftId, REVOKED());
165
177
  }
166
178
 
167
-
179
+ // TODO: maybe move this to a pricing service later
168
180
  function calculatePremium(
181
+ NftId productNftId,
169
182
  RiskId riskId,
170
183
  uint256 sumInsuredAmount,
171
- uint256 lifetime,
184
+ Seconds lifetime,
172
185
  bytes memory applicationData,
173
186
  NftId bundleNftId,
174
187
  ReferralId referralId
@@ -177,47 +190,36 @@ contract ApplicationService is
177
190
  view
178
191
  virtual override
179
192
  returns (
180
- uint256 premiumAmount,
181
- uint256 distributionFeeAmount,
182
- uint256 productFeeAmount,
183
- uint256 poolFeeAmount,
184
- uint256 bundleFeeAmount
193
+ IPolicy.Premium memory premium
185
194
  )
186
195
  {
187
- Product product = _getAndVerifyInstanceAndProduct();
188
- uint256 netPremiumAmount = product.calculateNetPremium(
196
+ uint256 netPremiumAmount = _getAndVerifyProduct(productNftId).calculateNetPremium(
189
197
  sumInsuredAmount,
190
198
  riskId,
191
199
  lifetime,
192
200
  applicationData
193
201
  );
194
202
 
195
- (
196
- productFeeAmount,
197
- poolFeeAmount,
198
- bundleFeeAmount,
199
- distributionFeeAmount
200
- ) = _calculateFeeAmounts(
203
+ premium = _getFixedFeeAmounts(
201
204
  netPremiumAmount,
202
- product,
205
+ _getAndVerifyProduct(productNftId),
203
206
  bundleNftId,
204
207
  referralId
205
208
  );
206
209
 
207
- premiumAmount = netPremiumAmount + productFeeAmount;
208
- premiumAmount += poolFeeAmount + bundleFeeAmount;
209
- premiumAmount += distributionFeeAmount;
210
- }
211
-
212
-
213
- function getDomain() public pure override(IService, Service) returns(ObjectType) {
214
- return APPLICATION();
210
+ (
211
+ premium
212
+ ) = _calculateVariableFeeAmounts(
213
+ premium,
214
+ _getAndVerifyProduct(productNftId),
215
+ bundleNftId,
216
+ referralId
217
+ );
215
218
  }
216
219
 
217
220
 
218
221
  // internal functions
219
-
220
- function _calculateFeeAmounts(
222
+ function _getFixedFeeAmounts(
221
223
  uint256 netPremiumAmount,
222
224
  Product product,
223
225
  NftId bundleNftId,
@@ -226,10 +228,7 @@ contract ApplicationService is
226
228
  internal
227
229
  view
228
230
  returns (
229
- uint256 productFeeAmount,
230
- uint256 poolFeeAmount,
231
- uint256 bundleFeeAmount,
232
- uint256 distributionFeeAmount
231
+ IPolicy.Premium memory premium
233
232
  )
234
233
  {
235
234
  InstanceReader instanceReader;
@@ -239,24 +238,99 @@ contract ApplicationService is
239
238
  }
240
239
 
241
240
  NftId poolNftId = product.getPoolNftId();
242
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
243
- require(bundleInfo.poolNftId == poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
241
+ premium = IPolicy.Premium(
242
+ netPremiumAmount, // net premium
243
+ netPremiumAmount, // full premium
244
+ 0, // premium
245
+ 0, 0, 0, 0, // fix fees
246
+ 0, 0, 0, 0, // variable fees
247
+ 0, 0, 0, 0); // distribution owner fee/commission/discount
244
248
 
245
249
  {
246
- ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
247
- (productFeeAmount,) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
250
+ {
251
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
252
+ uint256 t = productSetupInfo.productFee.fixedFee;
253
+ premium.productFeeFixAmount = t;
254
+ premium.fullPremiumAmount += t;
255
+ }
256
+ {
257
+ ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
258
+ uint256 t = poolSetupInfo.poolFee.fixedFee;
259
+ premium.poolFeeFixAmount = t;
260
+ premium.fullPremiumAmount += t;
261
+ }
262
+ {
263
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
264
+ if(bundleInfo.poolNftId != poolNftId) {
265
+ revert IApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
266
+ }
267
+ uint256 t = bundleInfo.fee.fixedFee;
268
+ premium.bundleFeeFixAmount = t;
269
+ premium.fullPremiumAmount += t;
270
+ }
271
+ {
272
+ ISetup.DistributionSetupInfo memory distInto = instanceReader.getDistributionSetupInfo(product.getDistributionNftId());
273
+ uint256 t = distInto.distributionFee.fixedFee;
274
+ premium.distributionFeeFixAmount = t;
275
+ premium.fullPremiumAmount += t;
276
+ }
248
277
  }
278
+
279
+ }
280
+
281
+ function _calculateVariableFeeAmounts(
282
+ IPolicy.Premium memory premium,
283
+ Product product,
284
+ NftId bundleNftId,
285
+ ReferralId referralId
286
+ )
287
+ internal
288
+ view
289
+ returns (
290
+ IPolicy.Premium memory finalPremium
291
+ )
292
+ {
293
+ InstanceReader instanceReader;
249
294
  {
250
- ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
251
- (poolFeeAmount,) = FeeLib.calculateFee(poolSetupInfo.poolFee, netPremiumAmount);
295
+ IInstance instance = product.getInstance();
296
+ instanceReader = instance.getInstanceReader();
252
297
  }
298
+
299
+ NftId poolNftId = product.getPoolNftId();
300
+ uint256 netPremiumAmount = premium.netPremiumAmount;
301
+
253
302
  {
254
- NftId distributionNftId = product.getDistributionNftId();
255
- ISetup.DistributionSetupInfo memory distributionSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
256
- (distributionFeeAmount,) = FeeLib.calculateFee(distributionSetupInfo.distributionFee, netPremiumAmount);
303
+ {
304
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
305
+ uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * productSetupInfo.productFee.fractionalFee).toInt();
306
+ premium.productFeeVarAmount = t;
307
+ premium.fullPremiumAmount += t;
308
+ }
309
+ {
310
+ ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
311
+ uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * poolSetupInfo.poolFee.fractionalFee).toInt();
312
+ premium.poolFeeVarAmount = t;
313
+ premium.fullPremiumAmount += t;
314
+ }
315
+ {
316
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
317
+ if(bundleInfo.poolNftId != poolNftId) {
318
+ revert IApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
319
+ }
320
+ uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * bundleInfo.fee.fractionalFee).toInt();
321
+ premium.bundleFeeVarAmount = t;
322
+ premium.fullPremiumAmount += t;
323
+ }
324
+ {
325
+ premium = _distributionService.calculateFeeAmount(
326
+ product.getDistributionNftId(),
327
+ referralId,
328
+ premium
329
+ );
330
+ }
257
331
  }
258
-
259
- (bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
332
+
333
+ return premium;
260
334
  }
261
335
 
262
336
 
@@ -265,4 +339,11 @@ contract ApplicationService is
265
339
  (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
266
340
  product = Product(productInfo.objectAddress);
267
341
  }
342
+
343
+ function _getAndVerifyProduct(NftId productNftId) internal view returns (Product product) {
344
+ IRegistry registry = getRegistry();
345
+ IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productNftId);
346
+ require(productInfo.objectType == PRODUCT(), "OBJECT_TYPE_INVALID");
347
+ product = Product(productInfo.objectAddress);
348
+ }
268
349
  }
@@ -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 {ApplicationService} from "./ApplicationService.sol";
7
+
8
+ contract ApplicationServiceManager is ProxyManager {
9
+
10
+ ApplicationService private _applicationService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address registryAddress
15
+ )
16
+ ProxyManager(registryAddress)
17
+ {
18
+ ApplicationService svc = new ApplicationService();
19
+ bytes memory data = abi.encode(registryAddress, address(this));
20
+ IVersionable versionable = deploy(
21
+ address(svc),
22
+ data);
23
+
24
+ _applicationService = ApplicationService(address(versionable));
25
+ }
26
+
27
+ //--- view functions ----------------------------------------------------//
28
+ function getApplicationService()
29
+ external
30
+ view
31
+ returns (ApplicationService)
32
+ {
33
+ return _applicationService;
34
+ }
35
+ }
@@ -10,16 +10,17 @@ import {ISetup} from "../module/ISetup.sol";
10
10
  import {IPolicy} from "../module/IPolicy.sol";
11
11
 
12
12
  import {IVersionable} from "../../shared/IVersionable.sol";
13
- import {Versionable} from "../../shared/Versionable.sol";
14
13
  import {INftOwnable} from "../../shared/INftOwnable.sol";
15
14
 
16
15
  import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
17
16
  import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
18
17
  import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
19
18
  import {Fee, FeeLib} from "../../types/Fee.sol";
20
- import {Version, VersionLib} from "../../types/Version.sol";
21
19
  import {KEEP_STATE, StateId} from "../../types/StateId.sol";
20
+ import {Seconds} from "../../types/Seconds.sol";
22
21
  import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
22
+ import {Version, VersionLib} from "../../types/Version.sol";
23
+ import {Versionable} from "../../shared/Versionable.sol";
23
24
 
24
25
  import {IService} from "../../shared/IService.sol";
25
26
  import {Service} from "../../shared/Service.sol";
@@ -67,7 +68,7 @@ contract BundleService is
67
68
  address owner,
68
69
  Fee memory fee,
69
70
  uint256 stakingAmount,
70
- uint256 lifetime,
71
+ Seconds lifetime,
71
72
  bytes calldata filter
72
73
  )
73
74
  external
@@ -16,7 +16,7 @@ contract BundleServiceManager is ProxyManager {
16
16
  constructor(
17
17
  address registryAddress
18
18
  )
19
- ProxyManager()
19
+ ProxyManager(registryAddress)
20
20
  {
21
21
  BundleService bundleSrv = new BundleService();
22
22
  bytes memory data = abi.encode(registryAddress, address(this));
@@ -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
+ }