@etherisc/gif-next 0.0.2-b38343e-249 → 0.0.2-b44ae3c-205

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 (348) hide show
  1. package/README.md +6 -83
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +115 -95
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +182 -195
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +190 -67
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +207 -150
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +389 -181
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +213 -158
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +334 -249
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +135 -183
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +306 -2137
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +193 -75
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +432 -2883
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +491 -127
  30. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +425 -242
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +231 -287
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +38 -75
  38. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  40. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  41. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  42. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +123 -33
  44. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
  52. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  58. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  60. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +186 -126
  62. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +29 -38
  64. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +443 -240
  66. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +74 -39
  68. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +722 -81
  70. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +147 -32
  72. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +732 -111
  74. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +147 -44
  76. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +126 -95
  78. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +300 -187
  80. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +395 -50
  82. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +424 -64
  84. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +212 -133
  86. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +787 -46
  88. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
  90. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +95 -26
  92. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +387 -215
  94. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +84 -61
  96. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +958 -52
  98. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +96 -37
  100. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
  102. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +152 -54
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +28 -37
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -26
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  116. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -39
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +21 -34
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +10 -23
  128. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  130. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IService.sol/IService.json +95 -26
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -19
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -27
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +7 -20
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  153. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  154. package/artifacts/contracts/shared/Service.sol/Service.json +102 -28
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  162. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +7 -20
  164. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  166. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestService.sol/TestService.json +117 -39
  168. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  171. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  173. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  174. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  175. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
  177. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  179. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +83 -4
  182. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  184. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/Fee.sol/FeeLib.json +74 -19
  186. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  188. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  190. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  191. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  192. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  195. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +116 -7
  197. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  203. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  204. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  205. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  207. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  208. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  209. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  210. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  211. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  213. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  214. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  215. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  216. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  217. package/contracts/components/Component.sol +115 -85
  218. package/contracts/components/Distribution.sol +27 -50
  219. package/contracts/components/IComponent.sol +52 -17
  220. package/contracts/components/IDistributionComponent.sol +1 -30
  221. package/contracts/components/IPoolComponent.sol +75 -48
  222. package/contracts/components/IProductComponent.sol +8 -6
  223. package/contracts/components/Pool.sol +178 -130
  224. package/contracts/components/Product.sol +164 -74
  225. package/contracts/instance/BundleManager.sol +10 -9
  226. package/contracts/instance/Cloneable.sol +7 -2
  227. package/contracts/instance/IInstance.sol +40 -55
  228. package/contracts/instance/IInstanceService.sol +28 -14
  229. package/contracts/instance/Instance.sol +123 -185
  230. package/contracts/instance/InstanceAccessManager.sol +404 -160
  231. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  232. package/contracts/instance/InstanceReader.sol +90 -15
  233. package/contracts/instance/InstanceService.sol +173 -341
  234. package/contracts/instance/InstanceStore.sol +212 -0
  235. package/contracts/instance/ObjectManager.sol +6 -8
  236. package/contracts/instance/base/ComponentService.sol +53 -39
  237. package/contracts/instance/base/KeyValueStore.sol +13 -36
  238. package/contracts/instance/base/Lifecycle.sol +26 -6
  239. package/contracts/instance/module/IAccess.sol +21 -14
  240. package/contracts/instance/module/IBundle.sol +8 -5
  241. package/contracts/instance/module/IComponents.sol +41 -0
  242. package/contracts/instance/module/IDistribution.sol +3 -0
  243. package/contracts/instance/module/IPolicy.sol +39 -9
  244. package/contracts/instance/module/ISetup.sol +7 -21
  245. package/contracts/instance/service/ApplicationService.sol +68 -150
  246. package/contracts/instance/service/BundleService.sol +223 -139
  247. package/contracts/instance/service/ClaimService.sol +318 -32
  248. package/contracts/instance/service/DistributionService.sol +171 -100
  249. package/contracts/instance/service/IApplicationService.sol +11 -31
  250. package/contracts/instance/service/IBundleService.sol +92 -28
  251. package/contracts/instance/service/IClaimService.sol +52 -23
  252. package/contracts/instance/service/IDistributionService.sol +33 -11
  253. package/contracts/instance/service/IPolicyService.sol +24 -33
  254. package/contracts/instance/service/IPoolService.sol +97 -3
  255. package/contracts/instance/service/IPricingService.sol +37 -0
  256. package/contracts/instance/service/PolicyService.sol +168 -266
  257. package/contracts/instance/service/PoolService.sol +313 -19
  258. package/contracts/instance/service/PricingService.sol +275 -0
  259. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  260. package/contracts/instance/service/ProductService.sol +37 -60
  261. package/contracts/registry/ChainNft.sol +8 -0
  262. package/contracts/registry/IRegistry.sol +2 -0
  263. package/contracts/registry/IRegistryService.sol +2 -3
  264. package/contracts/registry/ITransferInterceptor.sol +1 -0
  265. package/contracts/registry/Registry.sol +23 -20
  266. package/contracts/registry/RegistryService.sol +29 -26
  267. package/contracts/registry/ReleaseManager.sol +20 -18
  268. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  269. package/contracts/shared/IPolicyHolder.sol +23 -9
  270. package/contracts/shared/IRegistryLinked.sol +0 -1
  271. package/contracts/shared/IService.sol +6 -4
  272. package/contracts/shared/NftOwnable.sol +0 -2
  273. package/contracts/shared/PolicyHolder.sol +30 -17
  274. package/contracts/shared/Registerable.sol +12 -11
  275. package/contracts/shared/RegistryLinked.sol +0 -5
  276. package/contracts/shared/Service.sol +21 -7
  277. package/contracts/shared/TokenHandler.sol +14 -6
  278. package/contracts/test/TestService.sol +1 -1
  279. package/contracts/types/Amount.sol +109 -0
  280. package/contracts/types/Blocknumber.sol +1 -0
  281. package/contracts/types/ClaimId.sol +25 -2
  282. package/contracts/types/Fee.sol +17 -8
  283. package/contracts/types/NftId.sol +8 -0
  284. package/contracts/types/ObjectType.sol +10 -5
  285. package/contracts/types/PayoutId.sol +33 -5
  286. package/contracts/types/Referral.sol +4 -0
  287. package/contracts/types/RoleId.sol +13 -6
  288. package/contracts/types/Seconds.sol +54 -0
  289. package/contracts/types/StateId.sol +7 -2
  290. package/contracts/types/Timestamp.sol +18 -13
  291. package/contracts/types/UFixed.sol +1 -0
  292. package/contracts/types/Version.sol +1 -0
  293. package/package.json +1 -1
  294. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  295. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  296. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  297. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  298. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  299. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  300. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  301. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  302. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  303. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  304. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  305. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  306. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  307. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  308. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  309. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  310. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  312. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  313. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  314. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  315. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  316. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  317. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  318. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  319. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  320. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  321. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  322. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  323. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  324. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  325. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  326. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  328. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  330. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  332. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  334. package/contracts/experiment/cloning/Cloner.sol +0 -47
  335. package/contracts/experiment/errors/Require.sol +0 -38
  336. package/contracts/experiment/errors/Revert.sol +0 -44
  337. package/contracts/experiment/inheritance/A.sol +0 -53
  338. package/contracts/experiment/inheritance/B.sol +0 -28
  339. package/contracts/experiment/inheritance/C.sol +0 -34
  340. package/contracts/experiment/inheritance/IA.sol +0 -13
  341. package/contracts/experiment/inheritance/IB.sol +0 -10
  342. package/contracts/experiment/inheritance/IC.sol +0 -12
  343. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  344. package/contracts/experiment/statemachine/ISM.sol +0 -25
  345. package/contracts/experiment/statemachine/SM.sol +0 -57
  346. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  347. package/contracts/experiment/types/TypeA.sol +0 -47
  348. package/contracts/experiment/types/TypeB.sol +0 -29
@@ -0,0 +1,41 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount} from "../../types/Amount.sol";
7
+ import {Fee} from "../../types/Fee.sol";
8
+ import {NftId} from "../../types/NftId.sol";
9
+ import {RoleId} from "../../types/RoleId.sol";
10
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
11
+ import {UFixed} from "../../types/UFixed.sol";
12
+
13
+ interface IComponents {
14
+
15
+ struct ComponentInfo {
16
+ string name; // component name (needs to be unique per instance)
17
+ IERC20Metadata token;
18
+ TokenHandler tokenHandler;
19
+ address wallet;
20
+ Amount balanceAmount; // calculated balance (may not necessarily match withg wallet balance)
21
+ Amount feeAmount; // accumulated fees belonging to component owner
22
+ bytes data; // will hold component type specific additional info (eg encoded pool info)
23
+ }
24
+
25
+ struct PoolInfo {
26
+ NftId productNftId; // the nft of the product this pool is linked to
27
+ RoleId bundleOwnerRole; // the required role for bundle owners
28
+ // TODO maxCapitalAmount -> maxBalanceAmount
29
+ Amount maxCapitalAmount; // max capital amount allowed for pool
30
+ Amount balanceAmount; // current pool balance (accounting view)
31
+ Amount feeAmount; // accumulated fee amount
32
+ bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
33
+ bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
34
+ bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
35
+ UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
36
+ UFixed retentionLevel; // amount of collateral held in pool (default 100%)
37
+ Fee poolFee; // pool fee on net premium
38
+ Fee stakingFee; // pool fee on staked capital from investor
39
+ Fee performanceFee; // pool fee on profits from capital investors
40
+ }
41
+ }
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {Amount} from "../../types/Amount.sol";
4
5
  import {DistributorType} from "../../types/DistributorType.sol";
5
6
  import {NftId} from "../../types/NftId.sol";
6
7
  import {Timestamp} from "../../types/Timestamp.sol";
@@ -24,6 +25,8 @@ interface IDistribution {
24
25
  DistributorType distributorType;
25
26
  bool active;
26
27
  bytes data;
28
+ Amount commissionAmount;
29
+ uint32 numPoliciesSold;
27
30
  }
28
31
 
29
32
  struct ReferralInfo {
@@ -1,29 +1,56 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {Amount} from "../../types/Amount.sol";
4
5
  import {NftId} from "../../types/NftId.sol";
5
6
  import {ClaimId} from "../../types/ClaimId.sol";
6
7
  import {ReferralId} from "../../types/Referral.sol";
7
8
  import {RiskId} from "../../types/RiskId.sol";
9
+ import {Seconds} from "../../types/Seconds.sol";
8
10
  import {Timestamp} from "../../types/Timestamp.sol";
9
11
 
10
12
  interface IPolicy {
11
13
 
14
+ struct Premium {
15
+ // this is the net premium calculated by the product
16
+ uint256 netPremiumAmount;
17
+ // fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
18
+ uint256 fullPremiumAmount;
19
+ // premium = fullPremium - discount
20
+ uint256 premiumAmount;
21
+ uint256 productFeeFixAmount;
22
+ uint256 poolFeeFixAmount;
23
+ uint256 bundleFeeFixAmount;
24
+ uint256 distributionFeeFixAmount;
25
+ uint256 productFeeVarAmount;
26
+ uint256 poolFeeVarAmount;
27
+ uint256 bundleFeeVarAmount;
28
+ uint256 distributionFeeVarAmount;
29
+ uint256 distributionOwnerFeeFixAmount;
30
+ // this is the remaining amount when the commission and discount are subtracted from the distribution fee variable part (must be at least the minDistributionOwnerFee)
31
+ uint256 distributionOwnerFeeVarAmount;
32
+ // this value is based on distributor type referenced in the referral
33
+ uint256 commissionAmount;
34
+ // this is based on referral used
35
+ uint256 discountAmount;
36
+ }
37
+
12
38
  /// @dev policy data for the full policy lifecycle
13
39
  struct PolicyInfo {
14
40
  NftId productNftId;
15
41
  NftId bundleNftId;
16
42
  ReferralId referralId;
17
43
  RiskId riskId;
18
- uint256 sumInsuredAmount;
19
- uint256 premiumAmount;
20
- uint256 premiumPaidAmount;
21
- uint256 lifetime;
44
+ Amount sumInsuredAmount;
45
+ Amount premiumAmount;
46
+ Amount premiumPaidAmount; // when lower than premium amount: max payout decreased accordingly
47
+ Seconds lifetime;
22
48
  bytes applicationData;
23
49
  bytes policyData;
24
50
  uint16 claimsCount;
25
51
  uint16 openClaimsCount;
26
- uint256 payoutAmount;
52
+ Amount claimAmount; // sum of confirmed claim amounts (max = sum insured amount)
53
+ Amount payoutAmount; // sum of payouts (max = sum confirmed claim amountst)
27
54
  Timestamp activatedAt; // time of underwriting
28
55
  Timestamp expiredAt; // no new claims (activatedAt + lifetime)
29
56
  Timestamp closedAt; // no locked capital (or declinedAt)
@@ -31,16 +58,19 @@ interface IPolicy {
31
58
 
32
59
  // claimId neeeds to be encoded policyNftId:claimId combination
33
60
  struct ClaimInfo {
34
- uint256 claimAmount;
35
- uint256 paidAmount;
61
+ Amount claimAmount;
62
+ Amount paidAmount;
63
+ uint8 payoutsCount;
64
+ uint8 openPayoutsCount;
36
65
  bytes data;
37
- Timestamp closedAt; // payoment of confirmed claim amount (or declinedAt)
66
+ // TODO consider to add processData that may include information supporting confirm or decline
67
+ Timestamp closedAt; // payment of confirmed claim amount (or declinedAt)
38
68
  }
39
69
 
40
70
  // claimId neeeds to be encoded policyNftId:claimId combination
41
71
  struct PayoutInfo {
42
72
  ClaimId claimId;
43
- uint256 amount;
73
+ Amount amount;
44
74
  bytes data;
45
75
  Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
46
76
  }
@@ -5,21 +5,19 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
5
5
 
6
6
  import {Fee} from "../../types/Fee.sol";
7
7
  import {NftId} from "../../types/NftId.sol";
8
- import {UFixed} from "../../types/UFixed.sol";
8
+ import {RoleId} from "../../types/RoleId.sol";
9
9
  import {TokenHandler} from "../../shared/TokenHandler.sol";
10
+ import {UFixed} from "../../types/UFixed.sol";
10
11
 
11
12
  interface ISetup {
13
+
12
14
  struct ProductSetupInfo {
13
15
  IERC20Metadata token;
14
16
  TokenHandler tokenHandler;
15
17
  NftId distributionNftId;
16
18
  NftId poolNftId;
17
- Fee distributionFee; // default distribution fee (no referral id)
18
19
  Fee productFee; // product fee on net premium
19
- Fee processingFee; // product fee on payout amounts
20
- Fee poolFee; // pool fee on net premium
21
- Fee stakingFee; // pool fee on staked capital from investor
22
- Fee performanceFee; // pool fee on profits from capital investors
20
+ Fee processingFee; // product fee on payout amounts
23
21
  bool isIntercepting; // intercepts nft transfers (for products)
24
22
  address wallet;
25
23
  }
@@ -27,21 +25,9 @@ interface ISetup {
27
25
  struct DistributionSetupInfo {
28
26
  NftId productNftId;
29
27
  TokenHandler tokenHandler;
30
- Fee distributionFee; // default distribution fee (no referral id)
31
- address wallet;
32
- }
33
-
34
- struct PoolSetupInfo {
35
- NftId productNftId;
36
- TokenHandler tokenHandler;
37
- bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
38
- bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
39
- bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
40
- UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
41
- UFixed retentionLevel; // amount of collateral held in pool (default 100%)
42
- Fee poolFee; // pool fee on net premium
43
- Fee stakingFee; // pool fee on staked capital from investor
44
- Fee performanceFee; // pool fee on profits from capital investors
28
+ Fee minDistributionOwnerFee;
29
+ Fee distributionFee; // recalculated whenever any fee on the product/pool/dist/disttype is changed
45
30
  address wallet;
31
+ uint256 sumDistributionOwnerFees;
46
32
  }
47
33
  }
@@ -1,15 +1,35 @@
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 "./IApplicationService.sol";
4
+ import {AmountLib} from "../../types/Amount.sol";
5
+ import {Seconds} from "../../types/Seconds.sol";
6
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
7
+ import {UFixed, UFixedLib} from "../../types/UFixed.sol";
8
+ import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
9
+ import {ObjectType, DISTRIBUTION, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE, PRICE} from "../../types/ObjectType.sol";
10
+ import {APPLIED, REVOKED, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
11
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
12
+ import {Fee, FeeLib} from "../../types/Fee.sol";
13
+ import {ReferralId} from "../../types/Referral.sol";
14
+ import {RiskId} from "../../types/RiskId.sol";
15
+ import {StateId} from "../../types/StateId.sol";
16
+ import {Version, VersionLib} from "../../types/Version.sol";
17
+ import {Amount, AmountLib} from "../../types/Amount.sol";
18
+
19
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
20
+ import {IVersionable} from "../../shared/IVersionable.sol";
21
+ import {Versionable} from "../../shared/Versionable.sol";
22
+ import {IService} from "../../shared/IService.sol";
23
+ import {Service} from "../../shared/Service.sol";
6
24
 
7
25
  import {IRegistry} from "../../registry/IRegistry.sol";
26
+
8
27
  import {IProductComponent} from "../../components/IProductComponent.sol";
9
- import {Product} from "../../components/Product.sol";
10
28
  import {IPoolComponent} from "../../components/IPoolComponent.sol";
11
29
  import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
12
- import {IInstance} from "../IInstance.sol";
30
+ import {Product} from "../../components/Product.sol";
31
+
32
+ import {IComponents} from "../module/IComponents.sol";
13
33
  import {IPolicy} from "../module/IPolicy.sol";
14
34
  import {IRisk} from "../module/IRisk.sol";
15
35
  import {IBundle} from "../module/IBundle.sol";
@@ -17,36 +37,24 @@ import {IProductService} from "./IProductService.sol";
17
37
  import {ITreasury} from "../module/ITreasury.sol";
18
38
  import {ISetup} from "../module/ISetup.sol";
19
39
 
20
- import {TokenHandler} from "../../shared/TokenHandler.sol";
21
-
22
- import {IVersionable} from "../../shared/IVersionable.sol";
23
- import {Versionable} from "../../shared/Versionable.sol";
24
-
25
- import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
26
- import {UFixed, UFixedLib} from "../../types/UFixed.sol";
27
- import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
28
- import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
29
- import {APPLIED, REVOKED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
30
- import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
31
- import {Fee, FeeLib} from "../../types/Fee.sol";
32
- import {ReferralId} from "../../types/Referral.sol";
33
- import {RiskId} from "../../types/RiskId.sol";
34
- import {StateId} from "../../types/StateId.sol";
35
- import {Version, VersionLib} from "../../types/Version.sol";
36
-
37
40
  import {ComponentService} from "../base/ComponentService.sol";
41
+
42
+ import {IInstance} from "../IInstance.sol";
38
43
  import {InstanceReader} from "../InstanceReader.sol";
44
+
39
45
  import {IApplicationService} from "./IApplicationService.sol";
40
46
  import {IBundleService} from "./IBundleService.sol";
47
+ import {IDistributionService} from "./IDistributionService.sol";
41
48
  import {IPoolService} from "./IPoolService.sol";
42
- import {IService} from "../../shared/IService.sol";
43
- import {Service} from "../../shared/Service.sol";
49
+ import {IPricingService} from "./IPricingService.sol";
44
50
 
45
51
 
46
52
  contract ApplicationService is
47
53
  ComponentService,
48
54
  IApplicationService
49
55
  {
56
+ IDistributionService internal _distributionService;
57
+ IPricingService internal _pricingService;
50
58
 
51
59
  function _initialize(
52
60
  address owner,
@@ -61,12 +69,15 @@ contract ApplicationService is
61
69
  address initialOwner;
62
70
  (registryAddress, initialOwner) = abi.decode(data, (address, address));
63
71
 
64
- initializeService(registryAddress, owner);
72
+ initializeService(registryAddress, address(0), owner);
65
73
  registerInterface(type(IApplicationService).interfaceId);
74
+
75
+ _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
76
+ _pricingService = IPricingService(_getServiceAddress(PRICE()));
66
77
  }
67
78
 
68
79
 
69
- function getDomain() public pure override(IService, Service) returns(ObjectType) {
80
+ function getDomain() public pure override returns(ObjectType) {
70
81
  return APPLICATION();
71
82
  }
72
83
 
@@ -74,8 +85,8 @@ contract ApplicationService is
74
85
  function create(
75
86
  address applicationOwner,
76
87
  RiskId riskId,
77
- uint256 sumInsuredAmount,
78
- uint256 lifetime,
88
+ Amount sumInsuredAmount,
89
+ Seconds lifetime,
79
90
  NftId bundleNftId,
80
91
  ReferralId referralId,
81
92
  bytes memory applicationData
@@ -84,13 +95,13 @@ contract ApplicationService is
84
95
  virtual
85
96
  returns (NftId applicationNftId)
86
97
  {
87
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
98
+ (NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
88
99
  // TODO: add validations (see create bundle in pool service)
89
100
 
90
101
  applicationNftId = getRegistryService().registerPolicy(
91
102
  IRegistry.ObjectInfo(
92
103
  zeroNftId(),
93
- productInfo.nftId,
104
+ productNftId,
94
105
  POLICY(),
95
106
  false, // intercepting property for policies is defined on product
96
107
  address(0),
@@ -99,7 +110,9 @@ contract ApplicationService is
99
110
  )
100
111
  );
101
112
 
102
- (uint256 premiumAmount,,,,) = calculatePremium(
113
+ // (uint256 premiumAmount,,,,,) = calculatePremium(
114
+ IPolicy.Premium memory premium = _pricingService.calculatePremium(
115
+ productNftId,
103
116
  riskId,
104
117
  sumInsuredAmount,
105
118
  lifetime,
@@ -108,27 +121,27 @@ contract ApplicationService is
108
121
  referralId
109
122
  );
110
123
 
111
- IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
112
- productInfo.nftId,
113
- bundleNftId,
114
- referralId,
115
- riskId,
116
- sumInsuredAmount,
117
- premiumAmount,
118
- 0,
119
- lifetime,
120
- applicationData,
121
- "",
122
- 0,
123
- 0,
124
- 0,
125
- zeroTimestamp(),
126
- zeroTimestamp(),
127
- zeroTimestamp()
128
- );
124
+ IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo({
125
+ productNftId: productNftId,
126
+ bundleNftId: bundleNftId,
127
+ referralId: referralId,
128
+ riskId: riskId,
129
+ sumInsuredAmount: sumInsuredAmount,
130
+ premiumAmount: AmountLib.toAmount(premium.premiumAmount),
131
+ premiumPaidAmount: AmountLib.zero(),
132
+ lifetime: lifetime,
133
+ applicationData: applicationData,
134
+ policyData: "",
135
+ claimsCount: 0,
136
+ openClaimsCount: 0,
137
+ claimAmount: AmountLib.zero(),
138
+ payoutAmount: AmountLib.zero(),
139
+ activatedAt: zeroTimestamp(),
140
+ expiredAt: zeroTimestamp(),
141
+ closedAt: zeroTimestamp()
142
+ });
129
143
 
130
- instance.createApplication(applicationNftId, policyInfo);
131
- instance.updateApplicationState(applicationNftId, APPLIED());
144
+ instance.getInstanceStore().createApplication(applicationNftId, policyInfo);
132
145
 
133
146
  // TODO: add logging
134
147
  }
@@ -151,8 +164,8 @@ contract ApplicationService is
151
164
  RiskId riskId,
152
165
  NftId bundleNftId,
153
166
  ReferralId referralId,
154
- uint256 sumInsuredAmount,
155
- uint256 lifetime,
167
+ Amount sumInsuredAmount,
168
+ Seconds lifetime,
156
169
  bytes memory applicationData
157
170
  )
158
171
  external
@@ -165,104 +178,9 @@ contract ApplicationService is
165
178
  external
166
179
  virtual override
167
180
  {
168
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
169
- instance.updateApplicationState(applicationNftId, REVOKED());
181
+ (,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
182
+ instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());
170
183
  }
171
184
 
172
-
173
- function calculatePremium(
174
- RiskId riskId,
175
- uint256 sumInsuredAmount,
176
- uint256 lifetime,
177
- bytes memory applicationData,
178
- NftId bundleNftId,
179
- ReferralId referralId
180
- )
181
- public
182
- view
183
- virtual override
184
- returns (
185
- uint256 premiumAmount,
186
- uint256 distributionFeeAmount,
187
- uint256 productFeeAmount,
188
- uint256 poolFeeAmount,
189
- uint256 bundleFeeAmount
190
- )
191
- {
192
- Product product = _getAndVerifyInstanceAndProduct();
193
- uint256 netPremiumAmount = product.calculateNetPremium(
194
- sumInsuredAmount,
195
- riskId,
196
- lifetime,
197
- applicationData
198
- );
199
-
200
- (
201
- productFeeAmount,
202
- poolFeeAmount,
203
- bundleFeeAmount,
204
- distributionFeeAmount
205
- ) = _calculateFeeAmounts(
206
- netPremiumAmount,
207
- product,
208
- bundleNftId,
209
- referralId
210
- );
211
-
212
- premiumAmount = netPremiumAmount + productFeeAmount;
213
- premiumAmount += poolFeeAmount + bundleFeeAmount;
214
- premiumAmount += distributionFeeAmount;
215
- }
216
-
217
-
218
185
  // internal functions
219
-
220
- function _calculateFeeAmounts(
221
- uint256 netPremiumAmount,
222
- Product product,
223
- NftId bundleNftId,
224
- ReferralId referralId
225
- )
226
- internal
227
- view
228
- returns (
229
- uint256 productFeeAmount,
230
- uint256 poolFeeAmount,
231
- uint256 bundleFeeAmount,
232
- uint256 distributionFeeAmount
233
- )
234
- {
235
- InstanceReader instanceReader;
236
- {
237
- IInstance instance = product.getInstance();
238
- instanceReader = instance.getInstanceReader();
239
- }
240
-
241
- NftId poolNftId = product.getPoolNftId();
242
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
243
- require(bundleInfo.poolNftId == poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
244
-
245
- {
246
- ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
247
- (productFeeAmount,) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
248
- }
249
- {
250
- ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
251
- (poolFeeAmount,) = FeeLib.calculateFee(poolSetupInfo.poolFee, netPremiumAmount);
252
- }
253
- {
254
- NftId distributionNftId = product.getDistributionNftId();
255
- ISetup.DistributionSetupInfo memory distributionSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
256
- (distributionFeeAmount,) = FeeLib.calculateFee(distributionSetupInfo.distributionFee, netPremiumAmount);
257
- }
258
-
259
- (bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
260
- }
261
-
262
-
263
- function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
264
- IRegistry.ObjectInfo memory productInfo;
265
- (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
266
- product = Product(productInfo.objectAddress);
267
- }
268
- }
186
+ }