@etherisc/gif-next 0.0.2-ce87da3-250 → 0.0.2-ceed5e3-261

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 (573) hide show
  1. package/README.md +15 -84
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +322 -252
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +249 -174
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +271 -83
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +61 -116
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +299 -2118
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +319 -59
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +433 -2856
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +642 -327
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +416 -242
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +132 -67
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  44. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  48. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  49. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  50. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  51. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  52. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  53. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  56. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  63. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  66. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  67. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +283 -213
  68. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  69. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +480 -213
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  72. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  73. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +527 -284
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  86. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +129 -90
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  89. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  90. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +271 -134
  92. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  93. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  95. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +408 -219
  96. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  97. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +80 -64
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  99. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  106. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  107. package/artifacts/contracts/{components → product}/Product.sol/Product.json +433 -282
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  109. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  113. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +188 -19
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +310 -77
  118. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
  120. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +430 -34
  124. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +373 -98
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
  130. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +769 -98
  132. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
  134. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
  136. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  137. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  138. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  140. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  142. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  148. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  150. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  151. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +209 -166
  152. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  154. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  156. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  157. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +101 -114
  158. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  159. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  160. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  162. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  164. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  166. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  167. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +222 -104
  168. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  170. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  172. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  173. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
  174. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  175. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  176. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  178. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  180. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  182. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  184. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IService.sol/IService.json +96 -19
  186. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  187. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  188. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  189. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  190. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  191. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  192. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  193. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  194. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  195. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  196. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  197. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  199. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  200. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  201. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  202. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +70 -35
  203. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  204. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -23
  205. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  206. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  207. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  208. package/artifacts/contracts/shared/Service.sol/Service.json +104 -22
  209. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  210. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  211. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  212. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  213. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  214. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  215. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  216. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  217. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  218. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  220. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  221. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  222. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  223. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  224. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +597 -0
  226. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  228. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  230. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  232. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  233. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  234. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  236. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  238. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  240. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  242. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  244. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  246. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  248. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  250. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  252. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  254. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  256. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  258. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  260. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  262. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  264. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  266. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  268. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  270. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  272. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  274. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  276. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  277. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  278. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  280. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  281. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  282. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  284. package/contracts/{components → distribution}/Distribution.sol +49 -75
  285. package/contracts/distribution/DistributionService.sol +297 -0
  286. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  287. package/contracts/{components → distribution}/IDistributionComponent.sol +11 -37
  288. package/contracts/{instance/service → distribution}/IDistributionService.sol +25 -25
  289. package/contracts/instance/BundleManager.sol +15 -14
  290. package/contracts/instance/IInstance.sol +60 -65
  291. package/contracts/instance/IInstanceService.sol +59 -21
  292. package/contracts/instance/Instance.sol +175 -203
  293. package/contracts/instance/InstanceAdmin.sol +331 -0
  294. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  295. package/contracts/instance/InstanceReader.sol +159 -60
  296. package/contracts/instance/InstanceService.sol +296 -333
  297. package/contracts/instance/InstanceServiceManager.sol +11 -21
  298. package/contracts/instance/InstanceStore.sol +269 -0
  299. package/contracts/instance/base/BalanceStore.sol +123 -0
  300. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  301. package/contracts/instance/base/ObjectCounter.sol +21 -0
  302. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -16
  303. package/contracts/instance/module/IAccess.sol +19 -20
  304. package/contracts/instance/module/IBundle.sol +8 -8
  305. package/contracts/instance/module/{ISetup.sol → IComponents.sol} +24 -20
  306. package/contracts/instance/module/IDistribution.sol +7 -5
  307. package/contracts/instance/module/IPolicy.sol +53 -16
  308. package/contracts/instance/module/IRisk.sol +1 -1
  309. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  310. package/contracts/oracle/IOracle.sol +20 -0
  311. package/contracts/oracle/IOracleComponent.sol +32 -0
  312. package/contracts/oracle/IOracleService.sol +65 -0
  313. package/contracts/oracle/Oracle.sol +145 -0
  314. package/contracts/oracle/OracleService.sol +278 -0
  315. package/contracts/oracle/OracleServiceManager.sol +42 -0
  316. package/contracts/pool/BundleService.sol +296 -0
  317. package/contracts/pool/BundleServiceManager.sol +42 -0
  318. package/contracts/pool/IBundleService.sol +106 -0
  319. package/contracts/pool/IPoolComponent.sol +112 -0
  320. package/contracts/pool/IPoolService.sol +150 -0
  321. package/contracts/pool/Pool.sol +299 -0
  322. package/contracts/pool/PoolService.sol +452 -0
  323. package/contracts/pool/PoolServiceManager.sol +42 -0
  324. package/contracts/product/ApplicationService.sol +254 -0
  325. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  326. package/contracts/product/ClaimService.sol +442 -0
  327. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  328. package/contracts/{instance/service → product}/IApplicationService.sol +16 -36
  329. package/contracts/product/IClaimService.sol +99 -0
  330. package/contracts/{instance/service → product}/IPolicyService.sol +37 -48
  331. package/contracts/product/IPricingService.sol +39 -0
  332. package/contracts/product/IProductComponent.sol +42 -0
  333. package/contracts/product/IProductService.sol +33 -0
  334. package/contracts/product/PolicyService.sol +475 -0
  335. package/contracts/product/PolicyServiceManager.sol +42 -0
  336. package/contracts/product/PricingService.sol +300 -0
  337. package/contracts/product/PricingServiceManager.sol +42 -0
  338. package/contracts/product/Product.sol +377 -0
  339. package/contracts/product/ProductService.sol +124 -0
  340. package/contracts/product/ProductServiceManager.sol +42 -0
  341. package/contracts/registry/ChainNft.sol +16 -1
  342. package/contracts/registry/IRegistry.sol +46 -21
  343. package/contracts/registry/IRegistryService.sol +39 -37
  344. package/contracts/registry/IServiceAuthorization.sol +35 -0
  345. package/contracts/registry/ITransferInterceptor.sol +1 -0
  346. package/contracts/registry/Registry.sol +215 -97
  347. package/contracts/registry/RegistryAdmin.sol +333 -0
  348. package/contracts/registry/RegistryService.sol +73 -90
  349. package/contracts/registry/RegistryServiceManager.sol +21 -30
  350. package/contracts/registry/ReleaseManager.sol +400 -195
  351. package/contracts/registry/ServiceAuthorization.sol +86 -0
  352. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  353. package/contracts/registry/TokenRegistry.sol +261 -62
  354. package/contracts/shared/AccessAdmin.sol +759 -0
  355. package/contracts/shared/AccessManagerCustom.sol +741 -0
  356. package/contracts/shared/AccessManagerExtended.sol +481 -0
  357. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  358. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  359. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  360. package/contracts/shared/Component.sol +281 -0
  361. package/contracts/shared/ComponentService.sol +617 -0
  362. package/contracts/shared/ComponentServiceManager.sol +35 -0
  363. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  364. package/contracts/shared/ERC165.sol +1 -1
  365. package/contracts/shared/IAccessAdmin.sol +168 -0
  366. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  367. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  368. package/contracts/shared/IComponent.sol +70 -0
  369. package/contracts/shared/IComponentService.sol +102 -0
  370. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  371. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  372. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  373. package/contracts/shared/INftOwnable.sol +2 -2
  374. package/contracts/shared/IPolicyHolder.sol +29 -10
  375. package/contracts/shared/IRegistryLinked.sol +0 -1
  376. package/contracts/shared/IService.sol +14 -7
  377. package/contracts/shared/IVersionable.sol +1 -1
  378. package/contracts/shared/InitializableCustom.sol +177 -0
  379. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  380. package/contracts/shared/KeyValueStore.sol +127 -0
  381. package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
  382. package/contracts/shared/NftIdSetManager.sol +65 -0
  383. package/contracts/shared/NftOwnable.sol +3 -16
  384. package/contracts/shared/PolicyHolder.sol +40 -19
  385. package/contracts/shared/ProxyManager.sol +34 -4
  386. package/contracts/shared/Registerable.sol +15 -14
  387. package/contracts/shared/RegistryLinked.sol +0 -5
  388. package/contracts/shared/Service.sol +47 -22
  389. package/contracts/shared/TokenHandler.sol +37 -6
  390. package/contracts/shared/Versionable.sol +1 -1
  391. package/contracts/staking/IStaking.sol +168 -0
  392. package/contracts/staking/IStakingService.sol +153 -0
  393. package/contracts/staking/StakeManagerLib.sol +231 -0
  394. package/contracts/staking/Staking.sol +513 -0
  395. package/contracts/staking/StakingManager.sol +54 -0
  396. package/contracts/staking/StakingReader.sol +187 -0
  397. package/contracts/staking/StakingService.sol +411 -0
  398. package/contracts/staking/StakingServiceManager.sol +44 -0
  399. package/contracts/staking/StakingStore.sol +613 -0
  400. package/contracts/staking/TargetManagerLib.sol +207 -0
  401. package/contracts/{types → type}/AddressSet.sol +1 -1
  402. package/contracts/type/Amount.sol +128 -0
  403. package/contracts/{types → type}/Blocknumber.sol +21 -3
  404. package/contracts/{types → type}/ClaimId.sol +25 -2
  405. package/contracts/{types → type}/Fee.sol +33 -23
  406. package/contracts/{types → type}/NftId.sol +21 -15
  407. package/contracts/{types → type}/NftIdSet.sol +2 -2
  408. package/contracts/type/ObjectType.sol +241 -0
  409. package/contracts/{types → type}/PayoutId.sol +33 -5
  410. package/contracts/{types → type}/Referral.sol +5 -1
  411. package/contracts/type/RequestId.sol +75 -0
  412. package/contracts/{types → type}/RiskId.sol +1 -1
  413. package/contracts/type/RoleId.sol +201 -0
  414. package/contracts/type/Seconds.sol +81 -0
  415. package/contracts/type/Selector.sol +102 -0
  416. package/contracts/{types → type}/StateId.sol +34 -4
  417. package/contracts/type/String.sol +53 -0
  418. package/contracts/{types → type}/Timestamp.sol +23 -14
  419. package/contracts/{types → type}/UFixed.sol +1 -0
  420. package/contracts/{types → type}/Version.sol +2 -1
  421. package/package.json +4 -3
  422. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  423. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  424. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  425. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  426. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  427. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  428. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  429. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  430. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  431. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  432. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  433. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  434. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  435. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  436. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  437. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  438. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  439. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  440. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  441. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  442. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  443. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  444. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  445. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -869
  446. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  447. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -657
  448. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  449. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1096
  450. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  451. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  452. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  453. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  454. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  455. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  456. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  457. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1254
  458. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  459. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -753
  460. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  461. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  462. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  463. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -409
  464. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  465. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  466. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  467. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -347
  468. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  469. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  470. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1120
  471. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  472. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -717
  473. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  474. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  475. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  476. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
  477. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  478. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  479. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  481. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  482. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  483. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  484. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  485. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  486. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  487. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  488. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  489. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  490. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  491. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  492. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  493. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  494. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  495. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  496. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  497. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  498. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  499. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  500. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  501. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  502. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  503. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  504. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  505. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  506. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  507. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  508. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  509. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  510. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  511. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  512. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  513. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  514. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  515. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  516. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  517. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  518. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  519. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  520. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  521. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  522. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  523. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  524. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  525. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  526. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  527. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  528. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  529. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  530. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  531. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  532. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  533. package/contracts/components/Component.sol +0 -241
  534. package/contracts/components/IComponent.sol +0 -54
  535. package/contracts/components/IPoolComponent.sol +0 -87
  536. package/contracts/components/IProductComponent.sol +0 -39
  537. package/contracts/components/Pool.sol +0 -254
  538. package/contracts/components/Product.sol +0 -285
  539. package/contracts/instance/InstanceAccessManager.sol +0 -297
  540. package/contracts/instance/base/ComponentService.sol +0 -134
  541. package/contracts/instance/base/KeyValueStore.sol +0 -172
  542. package/contracts/instance/module/ITreasury.sol +0 -23
  543. package/contracts/instance/service/ApplicationService.sol +0 -268
  544. package/contracts/instance/service/BundleService.sol +0 -298
  545. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  546. package/contracts/instance/service/ClaimService.sol +0 -151
  547. package/contracts/instance/service/DistributionService.sol +0 -366
  548. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  549. package/contracts/instance/service/IBundleService.sol +0 -54
  550. package/contracts/instance/service/IClaimService.sol +0 -61
  551. package/contracts/instance/service/IPoolService.sol +0 -20
  552. package/contracts/instance/service/IProductService.sol +0 -40
  553. package/contracts/instance/service/PolicyService.sol +0 -476
  554. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  555. package/contracts/instance/service/PoolService.sol +0 -109
  556. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  557. package/contracts/instance/service/ProductService.sol +0 -233
  558. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  559. package/contracts/registry/RegistryAccessManager.sol +0 -216
  560. package/contracts/shared/ContractDeployerLib.sol +0 -72
  561. package/contracts/test/TestFee.sol +0 -25
  562. package/contracts/test/TestRegisterable.sol +0 -18
  563. package/contracts/test/TestRoleId.sol +0 -14
  564. package/contracts/test/TestService.sol +0 -25
  565. package/contracts/test/TestVersion.sol +0 -44
  566. package/contracts/test/TestVersionable.sol +0 -17
  567. package/contracts/test/Usdc.sol +0 -26
  568. package/contracts/types/ChainId.sol +0 -38
  569. package/contracts/types/NumberId.sol +0 -52
  570. package/contracts/types/ObjectType.sol +0 -156
  571. package/contracts/types/RoleId.sol +0 -90
  572. /package/contracts/{types → type}/DistributorType.sol +0 -0
  573. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,442 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
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
+
19
+ import {TokenHandler} from "../shared/TokenHandler.sol";
20
+
21
+ import {IVersionable} from "../shared/IVersionable.sol";
22
+ import {Versionable} from "../shared/Versionable.sol";
23
+
24
+ import {Amount, AmountLib} from "../type/Amount.sol";
25
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
26
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
27
+ import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
28
+ import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, CLAIM, BUNDLE} from "../type/ObjectType.sol";
29
+ import {SUBMITTED, ACTIVE, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
30
+ import {NftId, NftIdLib} from "../type/NftId.sol";
31
+ import {Fee, FeeLib} from "../type/Fee.sol";
32
+ import {ReferralId} from "../type/Referral.sol";
33
+ import {RiskId} from "../type/RiskId.sol";
34
+ import {StateId} from "../type/StateId.sol";
35
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
36
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
37
+ import {Version, VersionLib} from "../type/Version.sol";
38
+
39
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
40
+ import {InstanceReader} from "../instance/InstanceReader.sol";
41
+ import {IBundleService} from "../pool/IBundleService.sol";
42
+ import {IClaimService} from "./IClaimService.sol";
43
+ import {IPoolService} from "../pool/IPoolService.sol";
44
+ import {IService} from "../shared/IService.sol";
45
+ import {Service} from "../shared/Service.sol";
46
+
47
+
48
+ contract ClaimService is
49
+ ComponentVerifyingService,
50
+ IClaimService
51
+ {
52
+
53
+ IPoolService internal _poolService;
54
+
55
+ function _initialize(
56
+ address owner,
57
+ bytes memory data
58
+ )
59
+ internal
60
+ virtual override
61
+ initializer()
62
+ {
63
+ (
64
+ address registryAddress,,
65
+ //address managerAddress
66
+ address authority
67
+ ) = abi.decode(data, (address, address, address));
68
+
69
+ initializeService(registryAddress, authority, owner);
70
+
71
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
72
+
73
+ registerInterface(type(IClaimService).interfaceId);
74
+ }
75
+
76
+ function submit(
77
+ NftId policyNftId,
78
+ Amount claimAmount,
79
+ bytes memory claimData // claim submission data
80
+ )
81
+ external
82
+ virtual
83
+ returns (ClaimId claimId)
84
+ {
85
+ (
86
+ IInstance instance,
87
+ InstanceReader instanceReader,
88
+ IPolicy.PolicyInfo memory policyInfo
89
+ ) = _verifyCallerWithPolicy(policyNftId);
90
+
91
+ // check policy is in its active period
92
+ if(policyInfo.activatedAt.eqz() || TimestampLib.blockTimestamp() >= policyInfo.expiredAt) {
93
+ revert ErrorClaimServicePolicyNotOpen(policyNftId);
94
+ }
95
+
96
+ // check policy including this claim is still within sum insured
97
+ if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
98
+ revert ErrorClaimServiceClaimExceedsSumInsured(
99
+ policyNftId,
100
+ policyInfo.sumInsuredAmount,
101
+ AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
102
+ }
103
+
104
+ // create new claim
105
+ claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
106
+ instance.getInstanceStore().createClaim(
107
+ policyNftId,
108
+ claimId,
109
+ IPolicy.ClaimInfo(
110
+ claimAmount,
111
+ AmountLib.zero(), // paidAmount
112
+ 0, // payoutsCount
113
+ 0, // openPayoutsCount
114
+ claimData, // claim submission data
115
+ "", // claim processing data
116
+ TimestampLib.zero())); // closedAt
117
+
118
+ // update and save policy info with instance
119
+ policyInfo.claimsCount += 1;
120
+ policyInfo.openClaimsCount += 1;
121
+ // policy claim amount is only updated when claim is confirmed
122
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
123
+
124
+ emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
125
+ }
126
+
127
+
128
+ function confirm(
129
+ NftId policyNftId,
130
+ ClaimId claimId,
131
+ Amount confirmedAmount,
132
+ bytes memory data // claim processing data
133
+ )
134
+ external
135
+ virtual
136
+ {
137
+ (
138
+ IInstance instance,
139
+ InstanceReader instanceReader,
140
+ IPolicy.PolicyInfo memory policyInfo
141
+ ) = _verifyCallerWithPolicy(policyNftId);
142
+
143
+ // check/update claim info
144
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
145
+ claimInfo.claimAmount = confirmedAmount;
146
+ claimInfo.processData = data;
147
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
148
+
149
+ // update and save policy info with instance
150
+ policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
151
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
152
+
153
+ emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
154
+ }
155
+
156
+ function decline(
157
+ NftId policyNftId,
158
+ ClaimId claimId,
159
+ bytes memory data // claim processing data
160
+ )
161
+ external
162
+ virtual
163
+ {
164
+ (
165
+ IInstance instance,
166
+ InstanceReader instanceReader,
167
+ IPolicy.PolicyInfo memory policyInfo
168
+ ) = _verifyCallerWithPolicy(policyNftId);
169
+
170
+ // check/update claim info
171
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
172
+ claimInfo.processData = data;
173
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
174
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, DECLINED());
175
+
176
+ // update and save policy info with instance
177
+ policyInfo.openClaimsCount -= 1;
178
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
179
+
180
+ emit LogClaimServiceClaimDeclined(policyNftId, claimId);
181
+ }
182
+
183
+ function close(
184
+ NftId policyNftId,
185
+ ClaimId claimId
186
+ )
187
+ external
188
+ virtual
189
+ {
190
+ (
191
+ IInstance instance,
192
+ InstanceReader instanceReader,
193
+ IPolicy.PolicyInfo memory policyInfo
194
+ ) = _verifyCallerWithPolicy(policyNftId);
195
+
196
+ // check/update claim info
197
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, CONFIRMED());
198
+
199
+ // check claim has no open payouts
200
+ if(claimInfo.openPayoutsCount > 0) {
201
+ revert ErrorClaimServiceClaimWithOpenPayouts(
202
+ policyNftId,
203
+ claimId,
204
+ claimInfo.openPayoutsCount);
205
+ }
206
+
207
+ // check claim paid amount matches with claim amount
208
+ if(claimInfo.paidAmount.toInt() < claimInfo.claimAmount.toInt()) {
209
+ revert ErrorClaimServiceClaimWithMissingPayouts(
210
+ policyNftId,
211
+ claimId,
212
+ claimInfo.claimAmount,
213
+ claimInfo.paidAmount);
214
+ }
215
+
216
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
217
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
218
+ }
219
+
220
+
221
+ function createPayout(
222
+ NftId policyNftId,
223
+ ClaimId claimId,
224
+ Amount amount,
225
+ bytes memory data
226
+ )
227
+ external
228
+ returns (PayoutId payoutId)
229
+ {
230
+ (
231
+ IInstance instance,
232
+ InstanceReader instanceReader,
233
+ IPolicy.PolicyInfo memory policyInfo
234
+ ) = _verifyCallerWithPolicy(policyNftId);
235
+
236
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
237
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
238
+
239
+ // TODO add checks
240
+ // claim needs to be open
241
+ // claim.paidAmount + amount <= claim.claimAmount
242
+
243
+ // check/update claim info
244
+ // create payout info with instance
245
+ uint8 claimNo = claimInfo.payoutsCount + 1;
246
+ payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
247
+ instance.getInstanceStore().createPayout(
248
+ policyNftId,
249
+ payoutId,
250
+ IPolicy.PayoutInfo(
251
+ payoutId.toClaimId(),
252
+ amount,
253
+ data,
254
+ TimestampLib.zero()));
255
+
256
+ // update and save claim info with instance
257
+ claimInfo.payoutsCount += 1;
258
+ claimInfo.openPayoutsCount += 1;
259
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
260
+
261
+ // update and save policy info with instance
262
+ policyInfo.payoutAmount.add(amount);
263
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
264
+
265
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
266
+ }
267
+
268
+
269
+ function processPayout(
270
+ NftId policyNftId,
271
+ PayoutId payoutId
272
+ )
273
+ external
274
+ virtual
275
+ {
276
+ (
277
+ IInstance instance,
278
+ InstanceReader instanceReader,
279
+ IPolicy.PolicyInfo memory policyInfo
280
+ ) = _verifyCallerWithPolicy(policyNftId);
281
+
282
+ // TODO add check that payout exists and is open
283
+ IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
284
+
285
+ // update and save payout info with instance
286
+ payoutInfo.paidAt = TimestampLib.blockTimestamp();
287
+ instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
288
+
289
+ // TODO update and save claim info with instance
290
+ ClaimId claimId = payoutId.toClaimId();
291
+ Amount payoutAmount = payoutInfo.amount;
292
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
293
+ claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
294
+ claimInfo.openPayoutsCount -= 1;
295
+
296
+ // check if this payout is closing the linked claim
297
+ // update claim and policy info accordingly
298
+ if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
299
+ claimInfo.closedAt == TimestampLib.blockTimestamp();
300
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
301
+
302
+ policyInfo.openClaimsCount -= 1;
303
+ } else {
304
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
305
+ }
306
+
307
+ // update and save policy info with instance
308
+ policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
309
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
310
+
311
+ // inform pool about payout
312
+ _poolService.reduceCollateral(
313
+ instance,
314
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
315
+ policyNftId,
316
+ policyInfo,
317
+ payoutAmount);
318
+
319
+ // transfer payout token and fee
320
+ (
321
+ Amount netPayoutAmount,
322
+ address beneficiary
323
+ ) = _transferPayoutAmount(
324
+ instanceReader,
325
+ policyNftId,
326
+ policyInfo,
327
+ payoutInfo);
328
+
329
+ // TODO callback IPolicyHolder
330
+
331
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
332
+ }
333
+
334
+ // TODO create (I)TreasuryService that deals with all gif related token transfers
335
+ function _transferPayoutAmount(
336
+ InstanceReader instanceReader,
337
+ NftId policyNftId,
338
+ IPolicy.PolicyInfo memory policyInfo,
339
+ IPolicy.PayoutInfo memory payoutInfo
340
+ )
341
+ internal
342
+ returns (
343
+ Amount netPayoutAmount,
344
+ address beneficiary
345
+ )
346
+ {
347
+ Amount payoutAmount = payoutInfo.amount;
348
+
349
+ if(payoutAmount.gtz()) {
350
+ NftId productNftId = policyInfo.productNftId;
351
+
352
+ // get pool component info from policy or product
353
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
354
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
355
+
356
+ netPayoutAmount = payoutAmount;
357
+ beneficiary = _getBeneficiary(policyNftId, payoutInfo.claimId);
358
+
359
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
360
+ if(FeeLib.gtz(productInfo.processingFee)) {
361
+ // TODO calculate net payout and processing fees
362
+ // TODO transfer processing fees to product wallet
363
+ // TODO inform product to update fee book keeping
364
+ }
365
+
366
+ poolInfo.tokenHandler.transfer(
367
+ poolInfo.wallet,
368
+ beneficiary,
369
+ netPayoutAmount);
370
+ }
371
+ }
372
+
373
+ // internal functions
374
+
375
+ function _getBeneficiary(
376
+ NftId policyNftId,
377
+ ClaimId claimId
378
+ )
379
+ internal
380
+ returns (address beneficiary)
381
+ {
382
+ // TODO check if owner is IPolicyHolder
383
+ // if so, obtain beneficiary from this contract
384
+
385
+ // default beneficiary is policy nft owner
386
+ beneficiary = getRegistry().ownerOf(policyNftId);
387
+ }
388
+
389
+
390
+ function _verifyCallerWithPolicy(
391
+ NftId policyNftId
392
+ )
393
+ internal
394
+ view
395
+ virtual
396
+ returns (
397
+ IInstance instance,
398
+ InstanceReader instanceReader,
399
+ IPolicy.PolicyInfo memory policyInfo
400
+ )
401
+ {
402
+ NftId productNftId;
403
+ (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
404
+ instanceReader = instance.getInstanceReader();
405
+
406
+ // check caller(product) policy match
407
+ policyInfo = instanceReader.getPolicyInfo(policyNftId);
408
+ if(policyInfo.productNftId != productNftId) {
409
+ revert ErrorClaimServicePolicyProductMismatch(policyNftId,
410
+ policyInfo.productNftId,
411
+ productNftId);
412
+ }
413
+ }
414
+
415
+ function _verifyClaim(
416
+ InstanceReader instanceReader,
417
+ NftId policyNftId,
418
+ ClaimId claimId,
419
+ StateId expectedState
420
+ )
421
+ internal
422
+ view
423
+ returns (
424
+ IPolicy.ClaimInfo memory claimInfo
425
+ )
426
+ {
427
+ // check claim is created state
428
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
429
+ if(claimState != expectedState) {
430
+ revert ErrorClaimServiceClaimNotInExpectedState(
431
+ policyNftId, claimId, expectedState, claimState);
432
+ }
433
+
434
+ // get claim info
435
+ claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
436
+ }
437
+
438
+
439
+ function _getDomain() internal pure override returns(ObjectType) {
440
+ return CLAIM();
441
+ }
442
+ }
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../../shared/IVersionable.sol";
5
- import {ProxyManager} from "../../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/ProxyManager.sol";
6
6
  import {ClaimService} from "./ClaimService.sol";
7
7
 
8
8
  contract ClaimServiceManager is ProxyManager {
@@ -11,15 +11,18 @@ contract ClaimServiceManager is ProxyManager {
11
11
 
12
12
  /// @dev initializes proxy manager with service implementation
13
13
  constructor(
14
- address registryAddress
15
- )
14
+ address authority,
15
+ address registryAddress,
16
+ bytes32 salt
17
+ )
16
18
  ProxyManager(registryAddress)
17
19
  {
18
- ClaimService svc = new ClaimService();
19
- bytes memory data = abi.encode(registryAddress, address(this));
20
- IVersionable versionable = deploy(
20
+ ClaimService svc = new ClaimService{salt: salt}();
21
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
22
+ IVersionable versionable = deployDetermenistic(
21
23
  address(svc),
22
- data);
24
+ data,
25
+ salt);
23
26
 
24
27
  _claimService = ClaimService(address(versionable));
25
28
  }
@@ -1,30 +1,30 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {IRisk} from "../module/IRisk.sol";
5
- import {IService} from "../../shared/IService.sol";
4
+ import {IPolicy} from "../instance/module/IPolicy.sol";
5
+ import {IService} from "../shared/IService.sol";
6
6
 
7
- import {NftId} from "../../types/NftId.sol";
8
- import {ReferralId} from "../../types/Referral.sol";
9
- import {RiskId} from "../../types/RiskId.sol";
10
- import {StateId} from "../../types/StateId.sol";
11
- import {Timestamp} from "../../types/Timestamp.sol";
12
- import {UFixed} from "../../types/UFixed.sol";
13
- import {Fee} from "../../types/Fee.sol";
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";
14
13
 
15
14
  /// @dev gif service responsible for creating applications
16
15
  /// only product components may call transaction functions
17
16
  interface IApplicationService is IService {
18
17
 
19
- error IApplicationServicePolicyNotApplied(NftId applicationNftId);
18
+ error ErrorApplicationServiceNotProduct(NftId callerNftId, ObjectType callerType);
19
+ error ErrorApplicationServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
20
20
 
21
21
  /// @dev creates a new application based on the specified attributes
22
22
  /// may only be called by a product component
23
23
  function create(
24
24
  address applicationOwner,
25
25
  RiskId riskId,
26
- uint256 sumInsuredAmount,
27
- uint256 lifetime,
26
+ Amount sumInsuredAmount,
27
+ Seconds lifetime,
28
28
  NftId bundleNftId,
29
29
  ReferralId referralId,
30
30
  bytes memory applicationData
@@ -38,8 +38,8 @@ interface IApplicationService is IService {
38
38
  RiskId riskId,
39
39
  NftId bundleNftId,
40
40
  ReferralId referralId,
41
- uint256 sumInsuredAmount,
42
- uint256 lifetime,
41
+ Amount sumInsuredAmount,
42
+ Seconds lifetime,
43
43
  bytes memory applicationData
44
44
  ) external;
45
45
 
@@ -59,24 +59,4 @@ interface IApplicationService is IService {
59
59
  /// an application can only be revoked in applied state
60
60
  /// only the application holder may revoke an application
61
61
  function revoke(NftId policyNftId) external;
62
-
63
- /// @dev calculates the premium amount for the specified attributes
64
- /// also returns the various fee components involved with creating a policy
65
- function calculatePremium(
66
- RiskId riskId,
67
- uint256 sumInsuredAmount,
68
- uint256 lifetime,
69
- bytes memory applicationData,
70
- NftId bundleNftId,
71
- ReferralId referralId
72
- )
73
- external
74
- view
75
- returns (
76
- uint256 premiumAmount,
77
- uint256 distributionFeeAmount,
78
- uint256 productFeeAmount,
79
- uint256 poolFeeAmount,
80
- uint256 bundleFeeAmount
81
- );
82
- }
62
+ }
@@ -0,0 +1,99 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
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
+
49
+ // TODO add claim revoke functionality
50
+
51
+
52
+ /// @dev declines the specified claim
53
+ /// function can only be called by product, policy needs to match with calling product
54
+ function decline(
55
+ NftId policyNftId,
56
+ ClaimId claimId,
57
+ bytes memory data // claim processing data
58
+ ) external;
59
+
60
+
61
+ /// @dev confirms the specified claim and specifies the payout amount
62
+ /// function can only be called by product, policy needs to match with calling product
63
+ function confirm(
64
+ NftId policyNftId,
65
+ ClaimId claimId,
66
+ Amount confirmedAmount,
67
+ bytes memory data // claim processing data
68
+ ) external;
69
+
70
+
71
+ /// @dev closes the specified claim
72
+ /// function can only be called by product, policy needs to match with calling product
73
+ function close(
74
+ NftId policyNftId,
75
+ ClaimId claimId
76
+ ) external;
77
+
78
+
79
+ /// @dev creates a new payout for the specified claim
80
+ /// returns the id of the newly created payout, this id is unique for the specified policy
81
+ /// function can only be called by product, policy needs to match with calling product
82
+ function createPayout(
83
+ NftId policyNftId,
84
+ ClaimId claimId,
85
+ Amount amount,
86
+ bytes memory data
87
+ )
88
+ external
89
+ returns (PayoutId payoutId);
90
+
91
+
92
+ /// @dev processes the specified payout
93
+ /// this includes moving the payout token to the beneficiary (default: policy holder)
94
+ /// function can only be called by product, policy needs to match with calling product
95
+ function processPayout(
96
+ NftId policyNftId,
97
+ PayoutId payoutId
98
+ ) external;
99
+ }