@etherisc/gif-next 0.0.2-cddad6b-504 → 0.0.2-ce3fd5e-324

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 (575) hide show
  1. package/README.md +218 -39
  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 +780 -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 +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +295 -1649
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +616 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +470 -1918
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1348 -0
  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 +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1569 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +979 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +656 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2837 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +190 -0
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +76 -158
  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 +120 -249
  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 +4 -0
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  46. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  47. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  48. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  49. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  51. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  53. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  55. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  56. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  57. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  59. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  60. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  61. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  62. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
  63. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  64. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +735 -0
  65. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  66. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
  67. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  68. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  69. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  70. package/artifacts/contracts/pool/Pool.sol/Pool.json +1407 -0
  71. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  72. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
  73. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  74. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +708 -0
  75. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  76. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  77. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  78. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
  79. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  80. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1376 -0
  81. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  82. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
  83. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  84. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +493 -0
  85. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  86. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +743 -0
  87. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  88. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IPolicyService.sol/IPolicyService.json} +364 -343
  89. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  90. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → product/IPricingService.sol/IPricingService.json} +283 -260
  91. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  92. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +861 -0
  93. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  94. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IProductService.sol/IProductService.json} +217 -215
  95. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  96. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  97. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
  99. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  100. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  101. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  103. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  104. package/artifacts/contracts/product/Product.sol/Product.json +1198 -0
  105. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  106. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  107. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  108. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -34
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +858 -0
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  116. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  117. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/Registry.sol/Registry.json +491 -105
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  120. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1150 -0
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +657 -0
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  126. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  128. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +485 -0
  129. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  130. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  131. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  132. package/artifacts/contracts/shared/Component.sol/Component.json +873 -0
  133. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  134. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +631 -0
  135. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  136. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  137. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  138. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +636 -0
  139. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  140. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +64 -56
  141. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  142. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  143. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -37
  145. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  146. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  147. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  148. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IService.sol/IService.json} +162 -160
  149. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  151. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  152. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +238 -0
  153. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  154. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  155. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  156. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +569 -0
  157. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  158. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +245 -27
  159. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  160. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  161. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  162. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +256 -220
  163. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  164. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +114 -0
  165. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  166. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  167. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  168. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  169. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  170. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +523 -0
  171. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  172. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +628 -0
  173. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  174. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
  175. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  176. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  177. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  178. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  179. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  180. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  181. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  182. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  183. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  184. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  185. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  186. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  187. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  188. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  189. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  190. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  191. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  192. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  193. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  194. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  195. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  197. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  198. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  199. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  200. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  201. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  202. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  203. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  204. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  205. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  206. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  207. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  208. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
  209. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  210. package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  211. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  212. package/artifacts/contracts/{types/UFixed.sol/UFixedMathLib.json → type/UFixed.sol/UFixedLib.json} +4 -4
  213. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  214. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  215. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  216. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  217. package/contracts/distribution/Distribution.sol +285 -0
  218. package/contracts/distribution/DistributionService.sol +349 -0
  219. package/contracts/distribution/DistributionServiceManager.sol +51 -0
  220. package/contracts/distribution/IDistributionComponent.sol +71 -0
  221. package/contracts/distribution/IDistributionService.sol +87 -0
  222. package/contracts/instance/BundleManager.sol +126 -0
  223. package/contracts/instance/IInstance.sol +68 -44
  224. package/contracts/instance/IInstanceService.sol +73 -0
  225. package/contracts/instance/Instance.sol +214 -59
  226. package/contracts/instance/InstanceAccessManager.sol +543 -0
  227. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  228. package/contracts/instance/InstanceReader.sol +368 -0
  229. package/contracts/instance/InstanceService.sol +308 -0
  230. package/contracts/instance/InstanceServiceManager.sol +54 -0
  231. package/contracts/instance/InstanceStore.sol +211 -0
  232. package/contracts/instance/base/Cloneable.sol +51 -0
  233. package/contracts/instance/base/IKeyValueStore.sol +22 -19
  234. package/contracts/instance/base/ILifecycle.sol +4 -4
  235. package/contracts/instance/base/KeyValueStore.sol +61 -54
  236. package/contracts/instance/base/Lifecycle.sol +28 -8
  237. package/contracts/instance/base/ObjectManager.sol +82 -0
  238. package/contracts/instance/module/IAccess.sol +54 -0
  239. package/contracts/instance/module/IBundle.sol +23 -0
  240. package/contracts/instance/module/IComponents.sol +41 -0
  241. package/contracts/instance/module/IDistribution.sol +42 -0
  242. package/contracts/instance/module/IPolicy.sol +77 -0
  243. package/contracts/instance/module/IRisk.sol +11 -0
  244. package/contracts/instance/module/ISetup.sol +33 -0
  245. package/contracts/instance/module/ITreasury.sol +23 -0
  246. package/contracts/pool/BundleService.sol +382 -0
  247. package/contracts/pool/BundleServiceManager.sol +51 -0
  248. package/contracts/pool/IBundleService.sol +118 -0
  249. package/contracts/pool/IPoolComponent.sol +114 -0
  250. package/contracts/pool/IPoolService.sol +114 -0
  251. package/contracts/pool/Pool.sol +302 -0
  252. package/contracts/pool/PoolService.sol +403 -0
  253. package/contracts/pool/PoolServiceManager.sol +51 -0
  254. package/contracts/product/ApplicationService.sol +186 -0
  255. package/contracts/product/ApplicationServiceManager.sol +35 -0
  256. package/contracts/product/ClaimService.sol +437 -0
  257. package/contracts/product/ClaimServiceManager.sol +35 -0
  258. package/contracts/product/IApplicationService.sol +62 -0
  259. package/contracts/product/IClaimService.sol +90 -0
  260. package/contracts/product/IPolicyService.sol +80 -0
  261. package/contracts/product/IPricingService.sol +37 -0
  262. package/contracts/product/IProductComponent.sol +41 -0
  263. package/contracts/product/IProductService.sol +40 -0
  264. package/contracts/product/PolicyService.sol +376 -0
  265. package/contracts/product/PolicyServiceManager.sol +54 -0
  266. package/contracts/product/PricingService.sol +275 -0
  267. package/contracts/product/PricingServiceManager.sol +51 -0
  268. package/contracts/product/Product.sol +375 -0
  269. package/contracts/product/ProductService.sol +210 -0
  270. package/contracts/product/ProductServiceManager.sol +54 -0
  271. package/contracts/registry/ChainNft.sol +87 -36
  272. package/contracts/registry/IRegistry.sol +71 -27
  273. package/contracts/registry/IRegistryService.sol +66 -0
  274. package/contracts/registry/ITransferInterceptor.sol +7 -0
  275. package/contracts/registry/Registry.sol +372 -286
  276. package/contracts/registry/RegistryAccessManager.sol +216 -0
  277. package/contracts/registry/RegistryService.sol +285 -0
  278. package/contracts/registry/RegistryServiceManager.sol +60 -0
  279. package/contracts/registry/ReleaseManager.sol +328 -0
  280. package/contracts/registry/TokenRegistry.sol +116 -0
  281. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  282. package/contracts/shared/Component.sol +271 -0
  283. package/contracts/shared/ComponentService.sol +150 -0
  284. package/contracts/shared/ERC165.sol +14 -8
  285. package/contracts/shared/IComponent.sol +90 -0
  286. package/contracts/shared/INftOwnable.sol +23 -0
  287. package/contracts/shared/IPolicyHolder.sol +40 -0
  288. package/contracts/shared/IRegisterable.sol +10 -19
  289. package/contracts/shared/IRegistryLinked.sol +11 -0
  290. package/contracts/shared/IService.sol +18 -0
  291. package/contracts/shared/IVersionable.sol +38 -37
  292. package/contracts/shared/NftOwnable.sol +118 -0
  293. package/contracts/shared/PolicyHolder.sol +94 -0
  294. package/contracts/shared/ProxyManager.sol +169 -0
  295. package/contracts/shared/Registerable.sol +54 -65
  296. package/contracts/shared/RegistryLinked.sol +43 -0
  297. package/contracts/shared/Service.sol +72 -0
  298. package/contracts/shared/TokenHandler.sol +35 -0
  299. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  300. package/contracts/shared/Versionable.sol +38 -68
  301. package/contracts/staking/IStakingService.sol +102 -0
  302. package/contracts/staking/StakeingServiceManager.sol +37 -0
  303. package/contracts/staking/StakingService.sol +166 -0
  304. package/contracts/type/Amount.sol +109 -0
  305. package/contracts/{types → type}/Blocknumber.sol +1 -0
  306. package/contracts/type/ClaimId.sol +75 -0
  307. package/contracts/type/DistributorType.sol +55 -0
  308. package/contracts/{types → type}/Fee.sol +19 -10
  309. package/contracts/{types → type}/Key32.sol +8 -3
  310. package/contracts/{types → type}/NftId.sol +8 -0
  311. package/contracts/type/NftIdSet.sol +62 -0
  312. package/contracts/{types → type}/ObjectType.sol +45 -14
  313. package/contracts/type/PayoutId.sol +82 -0
  314. package/contracts/type/Referral.sol +89 -0
  315. package/contracts/type/RoleId.sol +132 -0
  316. package/contracts/type/Seconds.sol +54 -0
  317. package/contracts/{types → type}/StateId.sol +12 -3
  318. package/contracts/{types → type}/Timestamp.sol +22 -13
  319. package/contracts/{types → type}/UFixed.sol +129 -12
  320. package/contracts/{types → type}/Version.sol +14 -1
  321. package/package.json +6 -5
  322. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  323. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  324. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  325. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -405
  326. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  327. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -174
  328. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  329. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -340
  330. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  331. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  332. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -370
  333. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  334. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -578
  335. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  336. package/artifacts/contracts/components/Product.sol/Product.json +0 -444
  337. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  339. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  341. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  343. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  345. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  347. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  349. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  351. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  353. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  355. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  357. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  359. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  361. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  363. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  365. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  367. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  369. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  370. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  371. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  372. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  373. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  374. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  375. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  376. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  377. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  378. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  379. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  380. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -376
  381. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  382. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  383. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  384. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  386. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  387. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  389. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  391. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  393. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  394. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  396. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  397. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  398. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  399. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  400. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  401. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  402. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  403. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  404. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  405. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  406. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  407. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  409. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  410. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  411. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  412. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  413. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  414. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  415. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  416. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  417. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  418. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  419. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  420. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  421. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  422. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  423. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  424. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  425. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  426. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  427. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  428. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -531
  429. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  430. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -420
  431. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  432. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  433. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  434. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  435. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  436. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  437. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -543
  438. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  439. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -858
  440. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  441. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  442. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  443. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -495
  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/shared/Proxy.sol/Proxy.dbg.json +0 -4
  447. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +0 -178
  448. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  449. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  450. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -187
  451. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  452. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  453. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  454. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  455. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  456. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  457. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  458. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  459. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  460. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  461. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  462. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  463. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  464. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  465. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  466. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  467. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  468. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  469. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  470. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  471. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  472. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  473. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  474. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  475. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  476. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  477. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  478. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  479. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  480. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  481. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  482. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  483. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  484. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  485. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  486. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  487. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  488. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  489. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  490. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  491. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  492. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  493. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  494. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  495. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  496. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  497. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  498. package/contracts/components/BaseComponent.sol +0 -94
  499. package/contracts/components/Distribution.sol +0 -132
  500. package/contracts/components/IBaseComponent.sol +0 -19
  501. package/contracts/components/IDistributionComponent.sol +0 -47
  502. package/contracts/components/IPoolComponent.sol +0 -71
  503. package/contracts/components/IProductComponent.sol +0 -38
  504. package/contracts/components/Pool.sol +0 -235
  505. package/contracts/components/Product.sol +0 -227
  506. package/contracts/experiment/errors/Require.sol +0 -38
  507. package/contracts/experiment/errors/Revert.sol +0 -44
  508. package/contracts/experiment/inheritance/A.sol +0 -53
  509. package/contracts/experiment/inheritance/B.sol +0 -28
  510. package/contracts/experiment/inheritance/C.sol +0 -34
  511. package/contracts/experiment/inheritance/IA.sol +0 -13
  512. package/contracts/experiment/inheritance/IB.sol +0 -10
  513. package/contracts/experiment/inheritance/IC.sol +0 -12
  514. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  515. package/contracts/experiment/statemachine/ISM.sol +0 -25
  516. package/contracts/experiment/statemachine/README.md +0 -112
  517. package/contracts/experiment/statemachine/SM.sol +0 -57
  518. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  519. package/contracts/experiment/types/TypeA.sol +0 -47
  520. package/contracts/experiment/types/TypeB.sol +0 -29
  521. package/contracts/instance/IInstanceLinked.sol +0 -8
  522. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  523. package/contracts/instance/base/IInstanceBase.sol +0 -22
  524. package/contracts/instance/base/IService.sol +0 -15
  525. package/contracts/instance/base/InstanceBase.sol +0 -91
  526. package/contracts/instance/base/ModuleBase.sol +0 -57
  527. package/contracts/instance/base/ServiceBase.sol +0 -37
  528. package/contracts/instance/module/access/Access.sol +0 -149
  529. package/contracts/instance/module/access/IAccess.sol +0 -53
  530. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  531. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  532. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  533. package/contracts/instance/module/component/IComponent.sol +0 -28
  534. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  535. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  536. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  537. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  538. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  539. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  540. package/contracts/instance/module/risk/IRisk.sol +0 -26
  541. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  542. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  543. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  544. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  545. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  546. package/contracts/instance/service/DistributionService.sol +0 -59
  547. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  548. package/contracts/instance/service/IDistributionService.sol +0 -12
  549. package/contracts/instance/service/IPoolService.sol +0 -37
  550. package/contracts/instance/service/IProductService.sol +0 -107
  551. package/contracts/instance/service/PoolService.sol +0 -149
  552. package/contracts/instance/service/ProductService.sol +0 -509
  553. package/contracts/registry/IChainNft.sol +0 -21
  554. package/contracts/registry/IRegistryLinked.sol +0 -8
  555. package/contracts/registry/RegistryUpgradeable.sol +0 -416
  556. package/contracts/shared/IOwnable.sol +0 -6
  557. package/contracts/shared/Proxy.sol +0 -83
  558. package/contracts/shared/VersionableUpgradeable.sol +0 -108
  559. package/contracts/test/TestDistribution.sol +0 -21
  560. package/contracts/test/TestFee.sol +0 -25
  561. package/contracts/test/TestPool.sol +0 -25
  562. package/contracts/test/TestProduct.sol +0 -72
  563. package/contracts/test/TestRegisterable.sol +0 -19
  564. package/contracts/test/TestRoleId.sol +0 -14
  565. package/contracts/test/TestService.sol +0 -32
  566. package/contracts/test/TestToken.sol +0 -26
  567. package/contracts/test/TestVersion.sol +0 -44
  568. package/contracts/test/TestVersionable.sol +0 -17
  569. package/contracts/test/Usdc.sol +0 -26
  570. package/contracts/types/ChainId.sol +0 -38
  571. package/contracts/types/NftIdSet.sol +0 -60
  572. package/contracts/types/ReferralId.sol +0 -48
  573. package/contracts/types/RoleId.sol +0 -38
  574. /package/contracts/{types → type}/AddressSet.sol +0 -0
  575. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -0,0 +1,437 @@
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
+ // 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
+ }
@@ -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,90 @@
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) external;
53
+
54
+ /// @dev confirms the specified claim and specifies the payout amount
55
+ /// function can only be called by product, policy needs to match with calling product
56
+ function confirm(
57
+ NftId policyNftId,
58
+ ClaimId claimId,
59
+ Amount confirmedAmount
60
+ ) external;
61
+
62
+ /// @dev closes the specified claim
63
+ /// function can only be called by product, policy needs to match with calling product
64
+ function close(
65
+ NftId policyNftId,
66
+ ClaimId claimId
67
+ ) external;
68
+
69
+
70
+ /// @dev creates a new payout for the specified claim
71
+ /// returns the id of the newly created payout, this id is unique for the specified policy
72
+ /// function can only be called by product, policy needs to match with calling product
73
+ function createPayout(
74
+ NftId policyNftId,
75
+ ClaimId claimId,
76
+ Amount amount,
77
+ bytes memory data
78
+ )
79
+ external
80
+ returns (PayoutId payoutId);
81
+
82
+
83
+ /// @dev processes the specified payout
84
+ /// this includes moving the payout token to the beneficiary (default: policy holder)
85
+ /// function can only be called by product, policy needs to match with calling product
86
+ function processPayout(
87
+ NftId policyNftId,
88
+ PayoutId payoutId
89
+ ) external;
90
+ }