@etherisc/gif-next 0.0.2-984cc08-642 → 0.0.2-989147f-853

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 (495) hide show
  1. package/README.md +8 -13
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1376 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +819 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +68 -54
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +273 -1592
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +264 -218
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +443 -2515
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +479 -178
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +442 -249
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +413 -390
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +330 -95
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +93 -14
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +58 -75
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  54. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +735 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  58. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +291 -276
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  60. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +438 -201
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  62. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  64. package/artifacts/contracts/pool/Pool.sol/Pool.json +1407 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  66. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +747 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +687 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IApplicationService.sol/IApplicationService.json} +219 -172
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  80. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  82. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +182 -302
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  84. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +241 -230
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  86. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +239 -169
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  88. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +72 -166
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  92. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +779 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  94. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  96. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +727 -0
  97. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  98. package/artifacts/contracts/product/Product.sol/Product.json +1198 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  100. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +679 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +170 -17
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +208 -229
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +196 -43
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  114. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +50 -97
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +323 -258
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +331 -81
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +397 -81
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +142 -54
  123. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  124. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  125. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  126. package/artifacts/contracts/shared/Component.sol/Component.json +873 -0
  127. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +199 -163
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  131. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  132. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IComponent.sol/IComponent.json} +163 -218
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  136. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  140. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  141. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IService.sol/IService.json +71 -165
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  148. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -53
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  154. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  155. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Service.sol/Service.json +173 -153
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  158. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  160. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  162. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  163. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  164. package/artifacts/contracts/{components/Component.sol/Component.json → staking/IStakingService.sol/IStakingService.json} +219 -194
  165. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  166. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
  167. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  168. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -0
  169. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  170. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  171. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  172. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  173. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  174. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  175. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  176. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  177. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  178. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  179. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  180. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  181. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  182. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  183. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  185. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  186. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  187. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  188. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  189. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  190. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  191. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  192. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  193. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  194. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  195. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  197. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  198. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  199. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  200. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  201. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  202. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  203. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  204. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  205. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  206. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  207. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  208. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  209. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  210. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  211. package/contracts/distribution/Distribution.sol +285 -0
  212. package/contracts/distribution/DistributionService.sol +351 -0
  213. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +15 -12
  214. package/contracts/distribution/IDistributionComponent.sol +71 -0
  215. package/contracts/distribution/IDistributionService.sol +87 -0
  216. package/contracts/instance/BundleManager.sol +15 -14
  217. package/contracts/instance/IInstance.sol +55 -40
  218. package/contracts/instance/IInstanceService.sol +49 -16
  219. package/contracts/instance/Instance.sol +149 -179
  220. package/contracts/instance/InstanceAccessManager.sol +406 -166
  221. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  222. package/contracts/instance/InstanceReader.sol +101 -26
  223. package/contracts/instance/InstanceService.sol +192 -253
  224. package/contracts/instance/InstanceServiceManager.sol +11 -8
  225. package/contracts/instance/InstanceStore.sol +211 -0
  226. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  227. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  228. package/contracts/instance/base/ILifecycle.sol +3 -3
  229. package/contracts/instance/base/KeyValueStore.sol +44 -47
  230. package/contracts/instance/base/Lifecycle.sol +28 -7
  231. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -14
  232. package/contracts/instance/module/IAccess.sol +24 -18
  233. package/contracts/instance/module/IBundle.sol +11 -8
  234. package/contracts/instance/module/IComponents.sol +41 -0
  235. package/contracts/instance/module/IDistribution.sol +7 -4
  236. package/contracts/instance/module/IPolicy.sol +50 -17
  237. package/contracts/instance/module/IRisk.sol +1 -1
  238. package/contracts/instance/module/ISetup.sol +9 -22
  239. package/contracts/instance/module/ITreasury.sol +2 -2
  240. package/contracts/pool/BundleService.sol +384 -0
  241. package/contracts/{instance/service → pool}/BundleServiceManager.sol +15 -12
  242. package/contracts/pool/IBundleService.sol +118 -0
  243. package/contracts/pool/IPoolComponent.sol +114 -0
  244. package/contracts/pool/IPoolService.sol +114 -0
  245. package/contracts/pool/Pool.sol +302 -0
  246. package/contracts/pool/PoolService.sol +416 -0
  247. package/contracts/{instance/service → pool}/PoolServiceManager.sol +15 -12
  248. package/contracts/product/ApplicationService.sol +187 -0
  249. package/contracts/product/ApplicationServiceManager.sol +38 -0
  250. package/contracts/product/ClaimService.sol +443 -0
  251. package/contracts/product/ClaimServiceManager.sol +38 -0
  252. package/contracts/product/IApplicationService.sol +62 -0
  253. package/contracts/product/IClaimService.sol +93 -0
  254. package/contracts/product/IPolicyService.sol +80 -0
  255. package/contracts/product/IPricingService.sol +37 -0
  256. package/contracts/product/IProductComponent.sol +41 -0
  257. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  258. package/contracts/product/PolicyService.sol +378 -0
  259. package/contracts/{instance/service → product}/PolicyServiceManager.sol +16 -13
  260. package/contracts/product/PricingService.sol +276 -0
  261. package/contracts/product/PricingServiceManager.sol +42 -0
  262. package/contracts/product/Product.sol +379 -0
  263. package/contracts/product/ProductService.sol +212 -0
  264. package/contracts/{instance/service → product}/ProductServiceManager.sol +16 -13
  265. package/contracts/registry/ChainNft.sol +8 -0
  266. package/contracts/registry/IRegistry.sol +36 -21
  267. package/contracts/registry/IRegistryService.sol +33 -32
  268. package/contracts/registry/ITransferInterceptor.sol +1 -0
  269. package/contracts/registry/Registry.sol +160 -89
  270. package/contracts/registry/RegistryAccessManager.sol +51 -129
  271. package/contracts/registry/RegistryService.sol +79 -165
  272. package/contracts/registry/RegistryServiceManager.sol +28 -18
  273. package/contracts/registry/ReleaseManager.sol +235 -197
  274. package/contracts/registry/TokenRegistry.sol +21 -15
  275. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  276. package/contracts/shared/Component.sol +271 -0
  277. package/contracts/shared/ComponentService.sol +141 -0
  278. package/contracts/shared/ERC165.sol +14 -12
  279. package/contracts/shared/IComponent.sol +90 -0
  280. package/contracts/shared/INftOwnable.sol +12 -11
  281. package/contracts/shared/IPolicyHolder.sol +40 -0
  282. package/contracts/shared/IRegisterable.sol +4 -4
  283. package/contracts/shared/IRegistryLinked.sol +11 -0
  284. package/contracts/shared/IService.sol +6 -4
  285. package/contracts/shared/IVersionable.sol +5 -48
  286. package/contracts/shared/NftOwnable.sol +64 -82
  287. package/contracts/shared/PolicyHolder.sol +94 -0
  288. package/contracts/shared/ProxyManager.sol +126 -25
  289. package/contracts/shared/Registerable.sol +26 -41
  290. package/contracts/shared/RegistryLinked.sol +43 -0
  291. package/contracts/shared/Service.sol +33 -21
  292. package/contracts/shared/TokenHandler.sol +14 -6
  293. package/contracts/shared/Versionable.sol +4 -92
  294. package/contracts/staking/IStakingService.sol +102 -0
  295. package/contracts/staking/StakingService.sol +169 -0
  296. package/contracts/staking/StakingServiceManager.sol +40 -0
  297. package/contracts/type/Amount.sol +109 -0
  298. package/contracts/{types → type}/Blocknumber.sol +1 -0
  299. package/contracts/type/ClaimId.sol +75 -0
  300. package/contracts/{types → type}/DistributorType.sol +2 -2
  301. package/contracts/{types → type}/Fee.sol +17 -8
  302. package/contracts/{types → type}/NftId.sol +8 -0
  303. package/contracts/{types → type}/NftIdSet.sol +1 -1
  304. package/contracts/{types → type}/ObjectType.sol +17 -7
  305. package/contracts/type/PayoutId.sol +82 -0
  306. package/contracts/{types → type}/Referral.sol +4 -0
  307. package/contracts/type/RoleId.sol +139 -0
  308. package/contracts/type/Seconds.sol +54 -0
  309. package/contracts/{types → type}/StateId.sol +7 -2
  310. package/contracts/{types → type}/Timestamp.sol +18 -13
  311. package/contracts/{types → type}/UFixed.sol +1 -0
  312. package/contracts/{types → type}/Version.sol +1 -0
  313. package/package.json +3 -3
  314. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  315. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  316. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  317. package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -413
  318. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  319. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  320. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  321. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  322. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  323. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  324. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  325. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  326. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  328. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  330. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  332. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  334. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  336. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  338. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  340. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  342. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  344. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  346. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  349. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  351. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  353. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  355. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  357. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  359. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  361. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  363. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  365. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  366. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  367. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  368. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  369. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -619
  370. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  371. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  372. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  373. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  374. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  375. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  376. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -100
  377. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  378. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1094
  379. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  380. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -436
  381. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  382. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -764
  383. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  384. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -424
  385. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  386. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  387. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  388. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  389. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  390. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  391. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1219
  392. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  393. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -492
  394. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  395. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -798
  396. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  397. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -424
  398. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  399. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -848
  400. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  401. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -424
  402. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  403. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  404. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  405. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  406. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  407. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  408. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  409. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  410. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  411. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  412. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  413. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  414. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  415. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  416. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  417. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  418. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  419. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  420. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  421. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  422. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  423. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  424. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  425. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  426. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  427. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  428. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  429. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  430. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  431. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  432. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  433. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  434. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  435. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  436. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  437. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  438. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  439. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  440. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  441. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  442. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  443. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  444. package/contracts/components/Component.sol +0 -177
  445. package/contracts/components/Distribution.sol +0 -154
  446. package/contracts/components/IComponent.sol +0 -37
  447. package/contracts/components/IDistributionComponent.sol +0 -44
  448. package/contracts/components/IPoolComponent.sol +0 -66
  449. package/contracts/components/IProductComponent.sol +0 -35
  450. package/contracts/components/Pool.sol +0 -258
  451. package/contracts/components/Product.sol +0 -295
  452. package/contracts/experiment/cloning/Cloner.sol +0 -47
  453. package/contracts/experiment/errors/Require.sol +0 -38
  454. package/contracts/experiment/errors/Revert.sol +0 -44
  455. package/contracts/experiment/inheritance/A.sol +0 -53
  456. package/contracts/experiment/inheritance/B.sol +0 -28
  457. package/contracts/experiment/inheritance/C.sol +0 -34
  458. package/contracts/experiment/inheritance/IA.sol +0 -13
  459. package/contracts/experiment/inheritance/IB.sol +0 -10
  460. package/contracts/experiment/inheritance/IC.sol +0 -12
  461. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  462. package/contracts/experiment/statemachine/ISM.sol +0 -25
  463. package/contracts/experiment/statemachine/SM.sol +0 -57
  464. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  465. package/contracts/experiment/types/TypeA.sol +0 -47
  466. package/contracts/experiment/types/TypeB.sol +0 -29
  467. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  468. package/contracts/instance/IInstanceBase.sol +0 -27
  469. package/contracts/instance/InstanceBase.sol +0 -38
  470. package/contracts/instance/base/ComponentService.sol +0 -133
  471. package/contracts/instance/base/IInstanceBase.sol +0 -21
  472. package/contracts/instance/service/BundleService.sol +0 -293
  473. package/contracts/instance/service/DistributionService.sol +0 -115
  474. package/contracts/instance/service/IBundleService.sol +0 -44
  475. package/contracts/instance/service/IDistributionService.sol +0 -12
  476. package/contracts/instance/service/IPolicyService.sol +0 -94
  477. package/contracts/instance/service/IPoolService.sol +0 -20
  478. package/contracts/instance/service/PolicyService.sol +0 -538
  479. package/contracts/instance/service/PoolService.sol +0 -142
  480. package/contracts/instance/service/ProductService.sol +0 -241
  481. package/contracts/shared/ContractDeployerLib.sol +0 -72
  482. package/contracts/test/TestFee.sol +0 -25
  483. package/contracts/test/TestRegisterable.sol +0 -18
  484. package/contracts/test/TestRoleId.sol +0 -14
  485. package/contracts/test/TestService.sol +0 -25
  486. package/contracts/test/TestToken.sol +0 -26
  487. package/contracts/test/TestVersion.sol +0 -44
  488. package/contracts/test/TestVersionable.sol +0 -17
  489. package/contracts/test/Usdc.sol +0 -26
  490. package/contracts/types/ChainId.sol +0 -38
  491. package/contracts/types/NumberId.sol +0 -52
  492. package/contracts/types/RoleId.sol +0 -90
  493. /package/contracts/{types → type}/AddressSet.sol +0 -0
  494. /package/contracts/{types → type}/Key32.sol +0 -0
  495. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -0,0 +1,443 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRisk} from "../instance/module/IRisk.sol";
5
+ import {IService} from "./IApplicationService.sol";
6
+
7
+ import {IComponents} from "../instance/module/IComponents.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IProductComponent} from "./IProductComponent.sol";
10
+ import {Product} from "./Product.sol";
11
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
12
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
13
+ import {IInstance} from "../instance/IInstance.sol";
14
+ import {IPolicy} from "../instance/module/IPolicy.sol";
15
+ import {IRisk} from "../instance/module/IRisk.sol";
16
+ import {IBundle} from "../instance/module/IBundle.sol";
17
+ import {IProductService} from "./IProductService.sol";
18
+ import {ITreasury} from "../instance/module/ITreasury.sol";
19
+ import {ISetup} from "../instance/module/ISetup.sol";
20
+
21
+ import {TokenHandler} from "../shared/TokenHandler.sol";
22
+
23
+ import {IVersionable} from "../shared/IVersionable.sol";
24
+ import {Versionable} from "../shared/Versionable.sol";
25
+
26
+ import {Amount, AmountLib} from "../type/Amount.sol";
27
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
28
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
29
+ import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
30
+ import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, CLAIM, BUNDLE} from "../type/ObjectType.sol";
31
+ import {SUBMITTED, ACTIVE, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
32
+ import {NftId, NftIdLib, zeroNftId} from "../type/NftId.sol";
33
+ import {Fee, FeeLib} from "../type/Fee.sol";
34
+ import {ReferralId} from "../type/Referral.sol";
35
+ import {RiskId} from "../type/RiskId.sol";
36
+ import {StateId} from "../type/StateId.sol";
37
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
38
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
39
+ import {Version, VersionLib} from "../type/Version.sol";
40
+
41
+ import {ComponentService} from "../shared/ComponentService.sol";
42
+ import {InstanceReader} from "../instance/InstanceReader.sol";
43
+ import {IBundleService} from "../pool/IBundleService.sol";
44
+ import {IClaimService} from "./IClaimService.sol";
45
+ import {IPoolService} from "../pool/IPoolService.sol";
46
+ import {IService} from "../shared/IService.sol";
47
+ import {Service} from "../shared/Service.sol";
48
+
49
+
50
+ contract ClaimService is
51
+ ComponentService,
52
+ IClaimService
53
+ {
54
+
55
+ IPoolService internal _poolService;
56
+
57
+ function _initialize(
58
+ address owner,
59
+ bytes memory data
60
+ )
61
+ internal
62
+ virtual override
63
+ initializer()
64
+ {
65
+ (
66
+ address registryAddress,,
67
+ //address managerAddress
68
+ address authority
69
+ ) = abi.decode(data, (address, address, address));
70
+
71
+ initializeService(registryAddress, authority, owner);
72
+
73
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
74
+
75
+ registerInterface(type(IClaimService).interfaceId);
76
+ }
77
+
78
+
79
+ function getDomain() public pure override returns(ObjectType) {
80
+ return CLAIM();
81
+ }
82
+
83
+ function submit(
84
+ NftId policyNftId,
85
+ Amount claimAmount,
86
+ bytes memory claimData // claim submission data
87
+ )
88
+ external
89
+ virtual
90
+ returns (ClaimId claimId)
91
+ {
92
+ (
93
+ IInstance instance,
94
+ InstanceReader instanceReader,
95
+ IPolicy.PolicyInfo memory policyInfo
96
+ ) = _verifyCallerWithPolicy(policyNftId);
97
+
98
+ // check policy is in its active period
99
+ if(policyInfo.activatedAt.eqz() || TimestampLib.blockTimestamp() >= policyInfo.expiredAt) {
100
+ revert ErrorClaimServicePolicyNotOpen(policyNftId);
101
+ }
102
+
103
+ // check policy including this claim is still within sum insured
104
+ if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
105
+ revert ErrorClaimServiceClaimExceedsSumInsured(
106
+ policyNftId,
107
+ policyInfo.sumInsuredAmount,
108
+ AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
109
+ }
110
+
111
+ // create new claim
112
+ claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
113
+ instance.getInstanceStore().createClaim(
114
+ policyNftId,
115
+ claimId,
116
+ IPolicy.ClaimInfo(
117
+ claimAmount,
118
+ AmountLib.zero(), // paidAmount
119
+ 0, // payoutsCount
120
+ 0, // openPayoutsCount
121
+ claimData, // claim submission data
122
+ "", // claim processing data
123
+ TimestampLib.zero())); // closedAt
124
+
125
+ // update and save policy info with instance
126
+ policyInfo.claimsCount += 1;
127
+ policyInfo.openClaimsCount += 1;
128
+ // policy claim amount is only updated when claim is confirmed
129
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
130
+
131
+ emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
132
+ }
133
+
134
+
135
+ function confirm(
136
+ NftId policyNftId,
137
+ ClaimId claimId,
138
+ Amount confirmedAmount,
139
+ bytes memory data // claim processing data
140
+ )
141
+ external
142
+ virtual
143
+ {
144
+ (
145
+ IInstance instance,
146
+ InstanceReader instanceReader,
147
+ IPolicy.PolicyInfo memory policyInfo
148
+ ) = _verifyCallerWithPolicy(policyNftId);
149
+
150
+ // check/update claim info
151
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
152
+ claimInfo.claimAmount = confirmedAmount;
153
+ claimInfo.processData = data;
154
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
155
+
156
+ // update and save policy info with instance
157
+ policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
158
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
159
+
160
+ emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
161
+ }
162
+
163
+ function decline(
164
+ NftId policyNftId,
165
+ ClaimId claimId,
166
+ bytes memory data // claim processing data
167
+ )
168
+ external
169
+ virtual
170
+ {
171
+ (
172
+ IInstance instance,
173
+ InstanceReader instanceReader,
174
+ IPolicy.PolicyInfo memory policyInfo
175
+ ) = _verifyCallerWithPolicy(policyNftId);
176
+
177
+ // check/update claim info
178
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
179
+ claimInfo.processData = data;
180
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
181
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, DECLINED());
182
+
183
+ // update and save policy info with instance
184
+ policyInfo.openClaimsCount -= 1;
185
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
186
+
187
+ emit LogClaimServiceClaimDeclined(policyNftId, claimId);
188
+ }
189
+
190
+ function close(
191
+ NftId policyNftId,
192
+ ClaimId claimId
193
+ )
194
+ external
195
+ virtual
196
+ {
197
+ (
198
+ IInstance instance,
199
+ InstanceReader instanceReader,
200
+ IPolicy.PolicyInfo memory policyInfo
201
+ ) = _verifyCallerWithPolicy(policyNftId);
202
+
203
+ // check/update claim info
204
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, CONFIRMED());
205
+
206
+ // check claim has no open payouts
207
+ if(claimInfo.openPayoutsCount > 0) {
208
+ revert ErrorClaimServiceClaimWithOpenPayouts(
209
+ policyNftId,
210
+ claimId,
211
+ claimInfo.openPayoutsCount);
212
+ }
213
+
214
+ // check claim paid amount matches with claim amount
215
+ if(claimInfo.paidAmount.toInt() < claimInfo.claimAmount.toInt()) {
216
+ revert ErrorClaimServiceClaimWithMissingPayouts(
217
+ policyNftId,
218
+ claimId,
219
+ claimInfo.claimAmount,
220
+ claimInfo.paidAmount);
221
+ }
222
+
223
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
224
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
225
+ }
226
+
227
+
228
+ function createPayout(
229
+ NftId policyNftId,
230
+ ClaimId claimId,
231
+ Amount amount,
232
+ bytes memory data
233
+ )
234
+ external
235
+ returns (PayoutId payoutId)
236
+ {
237
+ (
238
+ IInstance instance,
239
+ InstanceReader instanceReader,
240
+ IPolicy.PolicyInfo memory policyInfo
241
+ ) = _verifyCallerWithPolicy(policyNftId);
242
+
243
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
244
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
245
+
246
+ // TODO add checks
247
+ // claim needs to be open
248
+ // claim.paidAmount + amount <= claim.claimAmount
249
+
250
+ // check/update claim info
251
+ // create payout info with instance
252
+ uint8 claimNo = claimInfo.payoutsCount + 1;
253
+ payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
254
+ instance.getInstanceStore().createPayout(
255
+ policyNftId,
256
+ payoutId,
257
+ IPolicy.PayoutInfo(
258
+ payoutId.toClaimId(),
259
+ amount,
260
+ data,
261
+ TimestampLib.zero()));
262
+
263
+ // update and save claim info with instance
264
+ claimInfo.payoutsCount += 1;
265
+ claimInfo.openPayoutsCount += 1;
266
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
267
+
268
+ // update and save policy info with instance
269
+ policyInfo.payoutAmount.add(amount);
270
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
271
+
272
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
273
+ }
274
+
275
+
276
+ function processPayout(
277
+ NftId policyNftId,
278
+ PayoutId payoutId
279
+ )
280
+ external
281
+ virtual
282
+ {
283
+ (
284
+ IInstance instance,
285
+ InstanceReader instanceReader,
286
+ IPolicy.PolicyInfo memory policyInfo
287
+ ) = _verifyCallerWithPolicy(policyNftId);
288
+
289
+ // TODO add check that payout exists and is open
290
+ IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
291
+
292
+ // update and save payout info with instance
293
+ payoutInfo.paidAt = TimestampLib.blockTimestamp();
294
+ instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
295
+
296
+ // TODO update and save claim info with instance
297
+ ClaimId claimId = payoutId.toClaimId();
298
+ Amount payoutAmount = payoutInfo.amount;
299
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
300
+ claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
301
+ claimInfo.openPayoutsCount -= 1;
302
+
303
+ // check if this payout is closing the linked claim
304
+ // update claim and policy info accordingly
305
+ if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
306
+ claimInfo.closedAt == TimestampLib.blockTimestamp();
307
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
308
+
309
+ policyInfo.openClaimsCount -= 1;
310
+ } else {
311
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
312
+ }
313
+
314
+ // update and save policy info with instance
315
+ policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
316
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
317
+
318
+ // inform pool about payout
319
+ _poolService.reduceCollateral(instance, policyNftId, policyInfo, payoutAmount);
320
+
321
+ // transfer payout token and fee
322
+ (
323
+ Amount netPayoutAmount,
324
+ address beneficiary
325
+ ) = _transferPayoutAmount(
326
+ instanceReader,
327
+ policyNftId,
328
+ policyInfo,
329
+ payoutInfo);
330
+
331
+ // TODO callback IPolicyHolder
332
+
333
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
334
+ }
335
+
336
+ // TODO create (I)TreasuryService that deals with all gif related token transfers
337
+ function _transferPayoutAmount(
338
+ InstanceReader instanceReader,
339
+ NftId policyNftId,
340
+ IPolicy.PolicyInfo memory policyInfo,
341
+ IPolicy.PayoutInfo memory payoutInfo
342
+ )
343
+ internal
344
+ returns (
345
+ Amount netPayoutAmount,
346
+ address beneficiary
347
+ )
348
+ {
349
+ Amount payoutAmount = payoutInfo.amount;
350
+
351
+ if(payoutAmount.gtz()) {
352
+ NftId productNftId = policyInfo.productNftId;
353
+ ISetup.ProductSetupInfo memory setupInfo = instanceReader.getProductSetupInfo(productNftId);
354
+
355
+ // get pool component info from policy or product
356
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
357
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
358
+
359
+ netPayoutAmount = payoutAmount;
360
+ beneficiary = _getBeneficiary(policyNftId, payoutInfo.claimId);
361
+
362
+ if(FeeLib.gtz(setupInfo.processingFee)) {
363
+ // TODO calculate net payout and processing fees
364
+ // TODO transfer processing fees to product wallet
365
+ // TODO inform product to update fee book keeping
366
+ }
367
+
368
+ poolInfo.tokenHandler.transfer(
369
+ poolInfo.wallet,
370
+ beneficiary,
371
+ netPayoutAmount);
372
+ }
373
+ }
374
+
375
+ // internal functions
376
+
377
+ function _getBeneficiary(
378
+ NftId policyNftId,
379
+ ClaimId claimId
380
+ )
381
+ internal
382
+ returns (address beneficiary)
383
+ {
384
+ // TODO check if owner is IPolicyHolder
385
+ // if so, obtain beneficiary from this contract
386
+
387
+ // default beneficiary is policy nft owner
388
+ beneficiary = getRegistry().ownerOf(policyNftId);
389
+ }
390
+
391
+
392
+ function _verifyCallerWithPolicy(
393
+ NftId policyNftId
394
+ )
395
+ internal
396
+ returns (
397
+ IInstance instance,
398
+ InstanceReader instanceReader,
399
+ IPolicy.PolicyInfo memory policyInfo
400
+ )
401
+ {
402
+ NftId productNftId;
403
+ (productNftId,, instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
404
+ instanceReader = instance.getInstanceReader();
405
+
406
+ // check caller(product) policy match
407
+ policyInfo = instanceReader.getPolicyInfo(policyNftId);
408
+ if(policyInfo.productNftId != productNftId) {
409
+ revert ErrorClaimServicePolicyProductMismatch(policyNftId,
410
+ policyInfo.productNftId,
411
+ productNftId);
412
+ }
413
+ }
414
+
415
+ function _verifyClaim(
416
+ InstanceReader instanceReader,
417
+ NftId policyNftId,
418
+ ClaimId claimId,
419
+ StateId expectedState
420
+ )
421
+ internal
422
+ view
423
+ returns (
424
+ IPolicy.ClaimInfo memory claimInfo
425
+ )
426
+ {
427
+ // check claim is created state
428
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
429
+ if(claimState != expectedState) {
430
+ revert ErrorClaimServiceClaimNotInExpectedState(
431
+ policyNftId, claimId, expectedState, claimState);
432
+ }
433
+
434
+ // get claim info
435
+ claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
436
+ }
437
+
438
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
439
+ IRegistry.ObjectInfo memory productInfo;
440
+ (, productInfo,) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
441
+ product = Product(productInfo.objectAddress);
442
+ }
443
+ }
@@ -0,0 +1,38 @@
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 authority,
15
+ address registryAddress,
16
+ bytes32 salt
17
+ )
18
+ ProxyManager(registryAddress)
19
+ {
20
+ ClaimService svc = new ClaimService{salt: salt}();
21
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
22
+ IVersionable versionable = deployDetermenistic(
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _claimService = ClaimService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getClaimService()
32
+ external
33
+ view
34
+ returns (ClaimService)
35
+ {
36
+ return _claimService;
37
+ }
38
+ }
@@ -0,0 +1,62 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IPolicy} from "../instance/module/IPolicy.sol";
5
+ import {IService} from "../shared/IService.sol";
6
+
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ObjectType} from "../type/ObjectType.sol";
10
+ import {ReferralId} from "../type/Referral.sol";
11
+ import {RiskId} from "../type/RiskId.sol";
12
+ import {Seconds} from "../type/Seconds.sol";
13
+
14
+ /// @dev gif service responsible for creating applications
15
+ /// only product components may call transaction functions
16
+ interface IApplicationService is IService {
17
+
18
+ error ErrorApplicationServiceNotProduct(NftId callerNftId, ObjectType callerType);
19
+ error ErrorApplicationServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
20
+
21
+ /// @dev creates a new application based on the specified attributes
22
+ /// may only be called by a product component
23
+ function create(
24
+ address applicationOwner,
25
+ RiskId riskId,
26
+ Amount sumInsuredAmount,
27
+ Seconds lifetime,
28
+ NftId bundleNftId,
29
+ ReferralId referralId,
30
+ bytes memory applicationData
31
+ ) external returns (NftId applicationNftId);
32
+
33
+ /// @dev updates application attributes
34
+ /// may only be called while the application is in applied state
35
+ /// may only be called by the referenced product related to applicationNftId
36
+ function adjust(
37
+ NftId applicationNftId,
38
+ RiskId riskId,
39
+ NftId bundleNftId,
40
+ ReferralId referralId,
41
+ Amount sumInsuredAmount,
42
+ Seconds lifetime,
43
+ bytes memory applicationData
44
+ ) external;
45
+
46
+ /// @dev creates a new application that extends the provided policy
47
+ /// lifetime will seamlessly extend referenced policy, for closed policies
48
+ /// lifetime will start at underwriting time
49
+ /// product will need to limit the time window for renewal as underwriting
50
+ /// will lock the collateral at underwriting time which might be earlier than activation time
51
+ /// policyNftId needs to refer to an underwritten (or active or closed) policy
52
+ /// may only be called by the referenced product related to policyNftId
53
+ function renew(
54
+ NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
55
+ NftId bundleNftId // will likely need a newer bundle for underwriting
56
+ ) external returns (NftId applicationNftId);
57
+
58
+ /// @dev revokes the application represented by {policyNftId}
59
+ /// an application can only be revoked in applied state
60
+ /// only the application holder may revoke an application
61
+ function revoke(NftId policyNftId) external;
62
+ }
@@ -0,0 +1,93 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IInstance} from "../instance/IInstance.sol";
5
+ import {InstanceReader} from "../instance/InstanceReader.sol";
6
+ import {IService} from "../shared/IService.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {ClaimId} from "../type/ClaimId.sol";
10
+ import {PayoutId} from "../type/PayoutId.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {StateId} from "../type/StateId.sol";
13
+ import {Timestamp} from "../type/Timestamp.sol";
14
+ import {UFixed} from "../type/UFixed.sol";
15
+ import {Fee} from "../type/Fee.sol";
16
+
17
+ /// @dev gif service responsible for creating claims and payouts
18
+ /// only product components may call transaction functions
19
+ interface IClaimService is
20
+ IService
21
+ {
22
+
23
+ event LogClaimServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
24
+ event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
25
+ event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
26
+ event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
27
+
28
+ event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
29
+ event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount);
30
+
31
+ error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
32
+ error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
33
+ error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
34
+
35
+ error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint8 openPayouts);
36
+ error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
37
+ error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
38
+
39
+ /// @dev create a new claim for the specified policy
40
+ /// returns the id of the newly created claim
41
+ /// function can only be called by product, policy needs to match with calling product
42
+ function submit(
43
+ NftId policyNftId,
44
+ Amount claimAmount,
45
+ bytes memory claimData
46
+ ) external returns (ClaimId claimId);
47
+
48
+ /// @dev declines the specified claim
49
+ /// function can only be called by product, policy needs to match with calling product
50
+ function decline(
51
+ NftId policyNftId,
52
+ ClaimId claimId,
53
+ bytes memory data // claim processing data
54
+ ) external;
55
+
56
+ /// @dev confirms the specified claim and specifies the payout amount
57
+ /// function can only be called by product, policy needs to match with calling product
58
+ function confirm(
59
+ NftId policyNftId,
60
+ ClaimId claimId,
61
+ Amount confirmedAmount,
62
+ bytes memory data // claim processing data
63
+ ) external;
64
+
65
+ /// @dev closes the specified claim
66
+ /// function can only be called by product, policy needs to match with calling product
67
+ function close(
68
+ NftId policyNftId,
69
+ ClaimId claimId
70
+ ) external;
71
+
72
+
73
+ /// @dev creates a new payout for the specified claim
74
+ /// returns the id of the newly created payout, this id is unique for the specified policy
75
+ /// function can only be called by product, policy needs to match with calling product
76
+ function createPayout(
77
+ NftId policyNftId,
78
+ ClaimId claimId,
79
+ Amount amount,
80
+ bytes memory data
81
+ )
82
+ external
83
+ returns (PayoutId payoutId);
84
+
85
+
86
+ /// @dev processes the specified payout
87
+ /// this includes moving the payout token to the beneficiary (default: policy holder)
88
+ /// function can only be called by product, policy needs to match with calling product
89
+ function processPayout(
90
+ NftId policyNftId,
91
+ PayoutId payoutId
92
+ ) external;
93
+ }