@etherisc/gif-next 0.0.2-d96b9e1-825 → 0.0.2-da09ec0-359

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