@etherisc/gif-next 0.0.2-8dd2f76-992 → 0.0.2-8e4a894-109

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 (411) hide show
  1. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  2. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +61 -14
  3. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
  5. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
  7. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  8. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +45 -14
  9. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  10. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +24 -274
  11. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +6 -6
  13. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +309 -2023
  15. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +21 -38
  17. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  18. package/artifacts/contracts/instance/Instance.sol/Instance.json +407 -2759
  19. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +71 -53
  21. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  23. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +343 -63
  25. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -265
  27. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +39 -124
  29. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2837 -0
  31. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  32. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -1
  33. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
  35. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  36. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +61 -12
  38. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +8 -8
  40. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol}/ObjectManager.json +3 -3
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  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/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  50. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  52. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
  54. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  55. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +105 -29
  56. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  57. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +56 -25
  58. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  59. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +270 -37
  60. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  61. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +56 -25
  62. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
  64. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +708 -0
  66. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  68. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
  70. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1376 -0
  72. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
  74. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  75. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +119 -101
  76. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +743 -0
  78. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  79. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +129 -84
  80. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  81. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +63 -175
  82. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  83. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +53 -22
  84. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  85. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +6 -14
  86. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  88. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  89. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
  90. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  92. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  93. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  94. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  95. package/artifacts/contracts/{components → product}/Product.sol/Product.json +53 -22
  96. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  98. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  100. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  101. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -13
  104. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  105. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/Registry.sol/Registry.json +6 -6
  107. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  108. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +4 -4
  109. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +21 -29
  111. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -40
  113. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +9 -9
  115. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
  117. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  118. package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
  119. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  120. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +38 -7
  121. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  122. package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +38 -14
  123. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  125. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +38 -7
  126. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  128. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  129. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  130. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  132. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  133. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  134. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  135. package/artifacts/contracts/shared/IService.sol/IService.json +5 -13
  136. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +8 -21
  139. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  140. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
  141. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  142. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +20 -33
  143. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -21
  145. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  146. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  147. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  148. package/artifacts/contracts/shared/Service.sol/Service.json +5 -13
  149. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  150. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  151. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  152. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  153. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  154. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  155. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +523 -0
  156. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +628 -0
  158. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  159. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
  160. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  161. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  162. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  163. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  164. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  165. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  166. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  167. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  168. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  169. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  170. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  171. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  172. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  173. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  174. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  175. package/artifacts/contracts/{types → type}/NftId.sol/NftIdLib.json +5 -5
  176. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  177. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  178. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  179. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  180. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  181. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  182. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  183. package/artifacts/contracts/{types → type}/Referral.sol/ReferralLib.json +5 -5
  184. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  185. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  186. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  187. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  188. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  189. package/artifacts/contracts/{types → type}/Seconds.sol/SecondsLib.json +3 -3
  190. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  191. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  192. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  193. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +20 -7
  194. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  195. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  196. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  197. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  198. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  199. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  200. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  201. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  202. package/contracts/{components → distribution}/Distribution.sol +21 -16
  203. package/contracts/{instance/service → distribution}/DistributionService.sol +91 -178
  204. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +5 -5
  205. package/contracts/{components → distribution}/IDistributionComponent.sol +7 -7
  206. package/contracts/{instance/service → distribution}/IDistributionService.sol +18 -30
  207. package/contracts/instance/BundleManager.sol +8 -9
  208. package/contracts/instance/IInstance.sol +43 -64
  209. package/contracts/instance/IInstanceService.sol +18 -17
  210. package/contracts/instance/Instance.sol +116 -214
  211. package/contracts/instance/InstanceAccessManager.sol +38 -24
  212. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  213. package/contracts/instance/InstanceReader.sol +95 -18
  214. package/contracts/instance/InstanceService.sol +97 -284
  215. package/contracts/instance/InstanceServiceManager.sol +1 -1
  216. package/contracts/instance/InstanceStore.sol +211 -0
  217. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +1 -1
  218. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  219. package/contracts/instance/base/ILifecycle.sol +3 -3
  220. package/contracts/instance/base/KeyValueStore.sol +31 -43
  221. package/contracts/instance/base/Lifecycle.sol +16 -5
  222. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +7 -7
  223. package/contracts/instance/module/IAccess.sol +2 -2
  224. package/contracts/instance/module/IBundle.sol +5 -5
  225. package/contracts/instance/module/IComponents.sol +8 -8
  226. package/contracts/instance/module/IDistribution.sol +7 -6
  227. package/contracts/instance/module/IPolicy.sol +19 -14
  228. package/contracts/instance/module/IRisk.sol +1 -1
  229. package/contracts/instance/module/ISetup.sol +4 -4
  230. package/contracts/instance/module/ITreasury.sol +2 -2
  231. package/contracts/{instance/service → pool}/BundleService.sol +101 -150
  232. package/contracts/{instance/service → pool}/BundleServiceManager.sol +5 -5
  233. package/contracts/{instance/service → pool}/IBundleService.sol +43 -18
  234. package/contracts/{components → pool}/IPoolComponent.sol +14 -13
  235. package/contracts/{instance/service → pool}/IPoolService.sol +28 -13
  236. package/contracts/{components → pool}/Pool.sol +20 -21
  237. package/contracts/{instance/service → pool}/PoolService.sol +153 -53
  238. package/contracts/{instance/service → pool}/PoolServiceManager.sol +5 -5
  239. package/contracts/product/ApplicationService.sol +186 -0
  240. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +2 -2
  241. package/contracts/product/ClaimService.sol +437 -0
  242. package/contracts/{instance/service → product}/ClaimServiceManager.sol +2 -2
  243. package/contracts/{instance/service → product}/IApplicationService.sol +14 -34
  244. package/contracts/product/IClaimService.sol +90 -0
  245. package/contracts/{instance/service → product}/IPolicyService.sol +34 -26
  246. package/contracts/product/IPricingService.sol +37 -0
  247. package/contracts/{components → product}/IProductComponent.sol +11 -10
  248. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  249. package/contracts/{instance/service → product}/PolicyService.sol +152 -138
  250. package/contracts/{instance/service → product}/PolicyServiceManager.sol +5 -5
  251. package/contracts/product/PricingService.sol +275 -0
  252. package/contracts/product/PricingServiceManager.sol +51 -0
  253. package/contracts/{components → product}/Product.sol +156 -74
  254. package/contracts/{instance/service → product}/ProductService.sol +46 -46
  255. package/contracts/{instance/service → product}/ProductServiceManager.sol +5 -5
  256. package/contracts/registry/IRegistry.sol +4 -4
  257. package/contracts/registry/IRegistryService.sol +4 -6
  258. package/contracts/registry/Registry.sol +3 -3
  259. package/contracts/registry/RegistryAccessManager.sol +1 -1
  260. package/contracts/registry/RegistryService.sol +23 -20
  261. package/contracts/registry/RegistryServiceManager.sol +0 -2
  262. package/contracts/registry/ReleaseManager.sol +5 -5
  263. package/contracts/registry/TokenRegistry.sol +2 -2
  264. package/contracts/{components → shared}/Component.sol +26 -8
  265. package/contracts/{instance/base → shared}/ComponentService.sol +63 -34
  266. package/contracts/{components → shared}/IComponent.sol +19 -5
  267. package/contracts/shared/INftOwnable.sol +1 -1
  268. package/contracts/shared/IPolicyHolder.sol +24 -10
  269. package/contracts/shared/IRegistryLinked.sol +0 -1
  270. package/contracts/shared/IService.sol +3 -1
  271. package/contracts/shared/IVersionable.sol +1 -1
  272. package/contracts/shared/NftOwnable.sol +1 -3
  273. package/contracts/shared/PolicyHolder.sol +31 -18
  274. package/contracts/shared/ProxyManager.sol +3 -3
  275. package/contracts/shared/Registerable.sol +12 -11
  276. package/contracts/shared/RegistryLinked.sol +0 -5
  277. package/contracts/shared/Service.sol +3 -3
  278. package/contracts/shared/TokenHandler.sol +4 -2
  279. package/contracts/shared/Versionable.sol +1 -1
  280. package/contracts/staking/IStakingService.sol +102 -0
  281. package/contracts/staking/StakeingServiceManager.sol +37 -0
  282. package/contracts/staking/StakingService.sol +166 -0
  283. package/contracts/{types → type}/Amount.sol +49 -0
  284. package/contracts/{types → type}/ClaimId.sol +25 -2
  285. package/contracts/{types → type}/Fee.sol +7 -6
  286. package/contracts/{types → type}/NftIdSet.sol +1 -1
  287. package/contracts/{types → type}/ObjectType.sol +10 -5
  288. package/contracts/{types → type}/PayoutId.sol +33 -5
  289. package/contracts/{types → type}/StateId.sol +6 -2
  290. package/contracts/{types → type}/Timestamp.sol +5 -0
  291. package/package.json +1 -1
  292. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  293. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  294. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  295. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  296. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  297. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  298. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  299. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  300. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  301. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  302. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  303. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  304. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  305. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  306. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  307. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  308. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  309. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  310. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  311. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  312. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  313. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  314. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  315. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  316. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  317. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  318. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  319. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  320. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  321. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  322. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  323. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  324. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  325. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  326. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  327. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  328. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  329. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  330. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  331. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  332. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  333. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  334. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  335. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  336. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  337. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  338. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  339. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  340. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  341. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  342. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  343. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  344. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  345. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  346. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  347. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  348. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  349. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  350. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  351. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  352. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  353. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  354. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  355. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  356. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  357. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  358. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  359. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  360. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  361. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  362. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  363. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  364. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  365. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  366. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  367. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  368. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  369. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  370. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  371. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  372. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  373. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  374. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  375. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  376. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  377. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  378. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  379. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  380. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  381. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  382. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  383. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  384. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  385. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  386. package/contracts/instance/service/ApplicationService.sol +0 -350
  387. package/contracts/instance/service/ClaimService.sol +0 -151
  388. package/contracts/instance/service/IClaimService.sol +0 -61
  389. package/contracts/shared/ContractDeployerLib.sol +0 -72
  390. package/contracts/test/TestFee.sol +0 -25
  391. package/contracts/test/TestRegisterable.sol +0 -18
  392. package/contracts/test/TestRoleId.sol +0 -14
  393. package/contracts/test/TestService.sol +0 -25
  394. package/contracts/test/TestToken.sol +0 -26
  395. package/contracts/test/TestVersion.sol +0 -44
  396. package/contracts/test/TestVersionable.sol +0 -17
  397. package/contracts/test/Usdc.sol +0 -26
  398. package/contracts/types/ChainId.sol +0 -38
  399. package/contracts/types/NumberId.sol +0 -52
  400. /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
  401. /package/contracts/{types → type}/AddressSet.sol +0 -0
  402. /package/contracts/{types → type}/Blocknumber.sol +0 -0
  403. /package/contracts/{types → type}/DistributorType.sol +0 -0
  404. /package/contracts/{types → type}/Key32.sol +0 -0
  405. /package/contracts/{types → type}/NftId.sol +0 -0
  406. /package/contracts/{types → type}/Referral.sol +0 -0
  407. /package/contracts/{types → type}/RiskId.sol +0 -0
  408. /package/contracts/{types → type}/RoleId.sol +0 -0
  409. /package/contracts/{types → type}/Seconds.sol +0 -0
  410. /package/contracts/{types → type}/UFixed.sol +0 -0
  411. /package/contracts/{types → type}/Version.sol +0 -0
@@ -1,32 +1,29 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {IPolicy} from "../module/IPolicy.sol";
5
- import {IRisk} from "../module/IRisk.sol";
6
- import {IService} from "../../shared/IService.sol";
4
+ import {IPolicy} from "../instance/module/IPolicy.sol";
5
+ import {IService} from "../shared/IService.sol";
7
6
 
8
- import {NftId} from "../../types/NftId.sol";
9
- import {ReferralId} from "../../types/Referral.sol";
10
- import {RiskId} from "../../types/RiskId.sol";
11
- import {Seconds} from "../../types/Seconds.sol";
12
- import {StateId} from "../../types/StateId.sol";
13
- import {Timestamp} from "../../types/Timestamp.sol";
14
- import {UFixed} from "../../types/UFixed.sol";
15
- 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";
16
13
 
17
14
  /// @dev gif service responsible for creating applications
18
15
  /// only product components may call transaction functions
19
16
  interface IApplicationService is IService {
20
17
 
21
- error IApplicationServicePolicyNotApplied(NftId applicationNftId);
22
- error IApplicationServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
18
+ error ErrorApplicationServiceNotProduct(NftId callerNftId, ObjectType callerType);
19
+ error ErrorApplicationServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
23
20
 
24
21
  /// @dev creates a new application based on the specified attributes
25
22
  /// may only be called by a product component
26
23
  function create(
27
24
  address applicationOwner,
28
25
  RiskId riskId,
29
- uint256 sumInsuredAmount,
26
+ Amount sumInsuredAmount,
30
27
  Seconds lifetime,
31
28
  NftId bundleNftId,
32
29
  ReferralId referralId,
@@ -41,8 +38,8 @@ interface IApplicationService is IService {
41
38
  RiskId riskId,
42
39
  NftId bundleNftId,
43
40
  ReferralId referralId,
44
- uint256 sumInsuredAmount,
45
- uint256 lifetime,
41
+ Amount sumInsuredAmount,
42
+ Seconds lifetime,
46
43
  bytes memory applicationData
47
44
  ) external;
48
45
 
@@ -62,21 +59,4 @@ interface IApplicationService is IService {
62
59
  /// an application can only be revoked in applied state
63
60
  /// only the application holder may revoke an application
64
61
  function revoke(NftId policyNftId) external;
65
-
66
- /// @dev calculates the premium amount for the specified attributes
67
- /// also returns the various fee components involved with creating a policy
68
- function calculatePremium(
69
- NftId productNftId,
70
- RiskId riskId,
71
- uint256 sumInsuredAmount,
72
- Seconds lifetime,
73
- bytes memory applicationData,
74
- NftId bundleNftId,
75
- ReferralId referralId
76
- )
77
- external
78
- view
79
- returns (
80
- IPolicy.Premium memory premium
81
- );
82
- }
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
+ }
@@ -1,50 +1,57 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {IRisk} from "../module/IRisk.sol";
5
- import {IService} from "../../shared/IService.sol";
4
+ import {IRisk} from "../instance/module/IRisk.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 {Seconds} from "../../types/Seconds.sol";
11
- import {StateId} from "../../types/StateId.sol";
12
- import {Timestamp} from "../../types/Timestamp.sol";
13
- import {UFixed} from "../../types/UFixed.sol";
14
- import {Fee} from "../../types/Fee.sol";
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {ClaimId} from "../type/ClaimId.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {PayoutId} from "../type/PayoutId.sol";
11
+ import {ReferralId} from "../type/Referral.sol";
12
+ import {RiskId} from "../type/RiskId.sol";
13
+ import {Seconds} from "../type/Seconds.sol";
14
+ import {StateId} from "../type/StateId.sol";
15
+ import {Timestamp} from "../type/Timestamp.sol";
16
+ import {UFixed} from "../type/UFixed.sol";
17
+ import {Fee} from "../type/Fee.sol";
15
18
 
16
19
  interface IPolicyService is IService {
17
-
20
+
21
+ error ErrorPolicyServicePolicyProductMismatch(NftId applicationNftId, NftId expectedProductNftId, NftId actualProductNftId);
22
+ error ErrorPolicyServicePolicyStateNotApplied(NftId applicationNftId);
23
+
18
24
  error ErrorIPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
19
- error ErrorIPolicyServicePremiumAlreadyPaid(NftId policyNftId, uint256 premiumPaidAmount);
25
+ error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId, Amount premiumPaidAmount);
20
26
  error ErrorIPolicyServicePolicyNotActivated(NftId policyNftId);
21
27
  error ErrorIPolicyServicePolicyAlreadyClosed(NftId policyNftId);
22
28
  error ErrorIPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
23
- error ErrorIPolicyServicePremiumNotFullyPaid(NftId policyNftId, uint256 premiumAmount, uint256 premiumPaidAmount);
29
+ error ErrorPolicyServicePremiumNotFullyPaid(NftId policyNftId, Amount premiumAmount, Amount premiumPaidAmount);
24
30
  error ErrorIPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
25
31
  error ErrorIPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
26
32
 
27
- error ErrorIPolicyServicePremiumMismatch(NftId policyNftId, uint256 premiumAmount, uint256 recalculatedPremiumAmount);
28
-
29
- /// @dev declines an application represented by {policyNftId}
30
- /// an application can only be declined in applied state
31
- /// only the related product may decline an application
32
- function decline(NftId policyNftId) external;
33
+ error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
34
+ error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
33
35
 
34
- /// @dev underwrites the policy represented by {policyNftId}
35
- /// sets the policy state to underwritten
36
+ /// @dev collateralizes the policy represented by {policyNftId}
37
+ /// sets the policy state to collateralized
36
38
  /// may set the policy state to activated and set the activation date
37
39
  /// optionally collects premiums and activates the policy.
38
40
  /// - premium payment is only attempted if requirePremiumPayment is set to true
39
41
  /// - activation is only done if activateAt is a non-zero timestamp
40
- /// an application can only be underwritten in applied state
41
- /// only the related product may underwrite an application
42
- function underwrite(
42
+ /// an application can only be collateralized in applied state
43
+ /// only the related product may collateralize an application
44
+ function collateralize(
43
45
  NftId policyNftId,
44
46
  bool requirePremiumPayment,
45
47
  Timestamp activateAt
46
48
  ) external;
47
49
 
50
+ /// @dev declines an application represented by {policyNftId}
51
+ /// an application can only be declined in applied state
52
+ /// only the related product may decline an application
53
+ function decline(NftId policyNftId) external;
54
+
48
55
  /// @dev collects the premium token for the specified policy
49
56
  function collectPremium(NftId policyNftId, Timestamp activateAt) external;
50
57
 
@@ -63,10 +70,11 @@ interface IPolicyService is IService {
63
70
  /// this function can only be called by a product. the policy needs to match with the calling product
64
71
  function close(NftId policyNftId) external;
65
72
 
73
+
66
74
  // TODO move function to pool service
67
75
  function calculateRequiredCollateral(
68
76
  UFixed collateralizationLevel,
69
- uint256 sumInsuredAmount
70
- ) external pure returns(uint256 collateralAmount);
77
+ Amount sumInsuredAmount
78
+ ) external pure returns(Amount collateralAmount);
71
79
 
72
80
  }
@@ -0,0 +1,37 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Seconds} from "../type/Seconds.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+ import {ReferralId} from "../type/Referral.sol";
7
+ import {RiskId} from "../type/RiskId.sol";
8
+ import {Amount} from "../type/Amount.sol";
9
+
10
+ import {IService} from "./IApplicationService.sol";
11
+ import {IPolicy} from "../instance/module/IPolicy.sol";
12
+
13
+ interface IPricingService is IService
14
+ {
15
+ error ErrorIPricingServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
16
+ error ErrorIPricingServiceFeeCalculationMismatch(
17
+ uint256 distributionFeeFixAmount,
18
+ uint256 distributionFeeVarAmount,
19
+ uint256 distributionOwnerFeeFixAmount,
20
+ uint256 distributionOwnerFeeVarAmount,
21
+ uint256 commissionAmount,
22
+ uint256 discountAmount
23
+ );
24
+
25
+ function calculatePremium(
26
+ NftId productNftId,
27
+ RiskId riskId,
28
+ Amount sumInsuredAmount,
29
+ Seconds lifetime,
30
+ bytes memory applicationData,
31
+ NftId bundleNftId,
32
+ ReferralId referralId
33
+ )
34
+ external
35
+ view
36
+ returns (IPolicy.Premium memory premium);
37
+ }
@@ -1,13 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Fee} from "../types/Fee.sol";
5
- import {IComponent} from "./IComponent.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {Fee} from "../type/Fee.sol";
6
+ import {IComponent} from "../shared/IComponent.sol";
6
7
  import {ISetup} from "../instance/module/ISetup.sol";
7
- import {NftId} from "../types/NftId.sol";
8
- import {ReferralId} from "../types/Referral.sol";
9
- import {RiskId} from "../types/RiskId.sol";
10
- import {Seconds} from "../types/Seconds.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ReferralId} from "../type/Referral.sol";
10
+ import {RiskId} from "../type/RiskId.sol";
11
+ import {Seconds} from "../type/Seconds.sol";
11
12
 
12
13
  interface IProductComponent is IComponent {
13
14
 
@@ -19,20 +20,20 @@ interface IProductComponent is IComponent {
19
20
  ) external;
20
21
 
21
22
  function calculatePremium(
22
- uint256 sumInsuredAmount,
23
+ Amount sumInsuredAmount,
23
24
  RiskId riskId,
24
25
  Seconds lifetime,
25
26
  bytes memory applicationData,
26
27
  NftId bundleNftId,
27
28
  ReferralId referralId
28
- ) external view returns (uint256 premiumAmount);
29
+ ) external view returns (Amount premiumAmount);
29
30
 
30
31
  function calculateNetPremium(
31
- uint256 sumInsuredAmount,
32
+ Amount sumInsuredAmount,
32
33
  RiskId riskId,
33
34
  Seconds lifetime,
34
35
  bytes memory applicationData
35
- ) external view returns (uint256 netPremiumAmount);
36
+ ) external view returns (Amount netPremiumAmount);
36
37
 
37
38
 
38
39
  function getPoolNftId() external view returns (NftId poolNftId);
@@ -1,16 +1,16 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {IRisk} from "../module/IRisk.sol";
5
- import {IService} from "../../shared/IService.sol";
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";
4
+ import {IRisk} from "../instance/module/IRisk.sol";
5
+ import {IService} from "../shared/IService.sol";
6
+
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ReferralId} from "../type/Referral.sol";
9
+ import {RiskId} from "../type/RiskId.sol";
10
+ import {StateId} from "../type/StateId.sol";
11
+ import {Timestamp} from "../type/Timestamp.sol";
12
+ import {UFixed} from "../type/UFixed.sol";
13
+ import {Fee} from "../type/Fee.sol";
14
14
 
15
15
  interface IProductService is IService {
16
16