@etherisc/gif-next 0.0.2-2a59cd5-352 → 0.0.2-2aa1035-611

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 (363) 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 +90 -145
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +145 -233
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +158 -73
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +169 -150
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +350 -180
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +162 -145
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +298 -288
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +95 -218
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +274 -2000
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +183 -203
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +398 -2776
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +491 -127
  32. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  34. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +253 -236
  36. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +216 -451
  38. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +184 -121
  40. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  41. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2663 -0
  42. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  43. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  44. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +100 -215
  46. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  50. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  52. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
  54. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  57. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  58. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  60. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  61. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  62. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +164 -379
  64. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +649 -0
  66. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +433 -425
  68. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +244 -105
  70. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1072 -0
  72. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +685 -0
  74. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +657 -318
  76. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +270 -115
  78. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +99 -236
  80. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +235 -319
  82. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +602 -0
  84. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +373 -158
  86. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +417 -232
  88. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +568 -120
  90. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +518 -0
  92. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +64 -163
  94. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +563 -366
  96. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +220 -121
  98. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +771 -247
  100. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +237 -102
  102. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +988 -0
  104. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +689 -0
  106. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +136 -271
  108. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +186 -107
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +4 -193
  116. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  118. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
  120. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  121. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +28 -277
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +182 -113
  126. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  127. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
  128. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  129. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +34 -67
  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/ERC165.sol/ERC165.json +2 -2
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -30
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -30
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -21
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IService.sol/IService.json +64 -163
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +10 -62
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -23
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +171 -88
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +11 -74
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -23
  154. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  155. package/artifacts/contracts/shared/Service.sol/Service.json +72 -203
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -150
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +11 -74
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  168. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestService.sol/TestService.json +90 -253
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  171. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  173. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +6 -188
  175. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  176. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  177. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  178. package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
  179. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  181. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  184. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  186. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
  188. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  190. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  192. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  194. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  197. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  198. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  199. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  201. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  203. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  205. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  206. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  207. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  208. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  209. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  210. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  211. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  213. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  214. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  215. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  216. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  217. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  218. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  219. package/contracts/components/Component.sol +100 -83
  220. package/contracts/components/Distribution.sol +22 -46
  221. package/contracts/components/IComponent.sol +43 -17
  222. package/contracts/components/IDistributionComponent.sol +1 -30
  223. package/contracts/components/IPoolComponent.sol +73 -47
  224. package/contracts/components/IProductComponent.sol +3 -2
  225. package/contracts/components/Pool.sol +178 -130
  226. package/contracts/components/Product.sol +172 -76
  227. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  228. package/contracts/instance/BundleManager.sol +10 -9
  229. package/contracts/instance/Cloneable.sol +7 -2
  230. package/contracts/instance/IInstance.sol +43 -49
  231. package/contracts/instance/IInstanceService.sol +32 -12
  232. package/contracts/instance/Instance.sol +129 -173
  233. package/contracts/instance/InstanceAccessManager.sol +404 -160
  234. package/contracts/instance/InstanceAuthorizationsLib.sol +300 -0
  235. package/contracts/instance/InstanceReader.sol +43 -16
  236. package/contracts/instance/InstanceService.sol +160 -293
  237. package/contracts/instance/InstanceServiceManager.sol +1 -1
  238. package/contracts/instance/InstanceStore.sol +208 -0
  239. package/contracts/instance/ObjectManager.sol +6 -8
  240. package/contracts/instance/base/ComponentService.sol +53 -39
  241. package/contracts/instance/base/KeyValueStore.sol +13 -5
  242. package/contracts/instance/base/Lifecycle.sol +23 -6
  243. package/contracts/instance/module/IAccess.sol +21 -14
  244. package/contracts/instance/module/IBundle.sol +8 -5
  245. package/contracts/instance/module/IComponents.sol +41 -0
  246. package/contracts/instance/module/IDistribution.sol +2 -0
  247. package/contracts/instance/module/IPolicy.sol +41 -9
  248. package/contracts/instance/module/ISetup.sol +7 -21
  249. package/contracts/instance/service/ApplicationService.sol +75 -158
  250. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  251. package/contracts/instance/service/BundleService.sol +230 -88
  252. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  253. package/contracts/instance/service/ClaimService.sol +239 -0
  254. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  255. package/contracts/instance/service/DistributionService.sol +156 -96
  256. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  257. package/contracts/instance/service/IApplicationService.sol +9 -30
  258. package/contracts/instance/service/IBundleService.sol +74 -26
  259. package/contracts/instance/service/IClaimService.sol +92 -0
  260. package/contracts/instance/service/IDistributionService.sol +26 -6
  261. package/contracts/instance/service/IPolicyService.sol +89 -38
  262. package/contracts/instance/service/IPoolService.sol +85 -3
  263. package/contracts/instance/service/IPricingService.sol +36 -0
  264. package/contracts/instance/service/PolicyService.sol +358 -305
  265. package/contracts/instance/service/PolicyServiceManager.sol +2 -2
  266. package/contracts/instance/service/PoolService.sol +246 -19
  267. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  268. package/contracts/instance/service/PricingService.sol +275 -0
  269. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  270. package/contracts/instance/service/ProductService.sol +37 -60
  271. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  272. package/contracts/registry/ChainNft.sol +8 -0
  273. package/contracts/registry/IRegistry.sol +2 -0
  274. package/contracts/registry/IRegistryService.sol +11 -10
  275. package/contracts/registry/ITransferInterceptor.sol +1 -0
  276. package/contracts/registry/Registry.sol +23 -20
  277. package/contracts/registry/RegistryService.sol +56 -47
  278. package/contracts/registry/RegistryServiceManager.sol +13 -13
  279. package/contracts/registry/ReleaseManager.sol +26 -33
  280. package/contracts/registry/TokenRegistry.sol +13 -10
  281. package/contracts/shared/ERC165.sol +2 -1
  282. package/contracts/shared/INftOwnable.sol +4 -9
  283. package/contracts/shared/IRegistryLinked.sol +0 -3
  284. package/contracts/shared/IService.sol +4 -4
  285. package/contracts/shared/IVersionable.sol +4 -47
  286. package/contracts/shared/NftOwnable.sol +10 -80
  287. package/contracts/shared/ProxyManager.sol +98 -24
  288. package/contracts/shared/Registerable.sol +3 -10
  289. package/contracts/shared/RegistryLinked.sol +10 -26
  290. package/contracts/shared/Service.sol +29 -17
  291. package/contracts/shared/TokenHandler.sol +11 -5
  292. package/contracts/shared/Versionable.sol +1 -90
  293. package/contracts/test/TestService.sol +1 -1
  294. package/contracts/types/Amount.sol +70 -0
  295. package/contracts/types/Blocknumber.sol +1 -0
  296. package/contracts/types/ClaimId.sol +75 -0
  297. package/contracts/types/Fee.sol +13 -5
  298. package/contracts/types/NftId.sol +8 -0
  299. package/contracts/types/ObjectType.sol +12 -7
  300. package/contracts/types/PayoutId.sol +82 -0
  301. package/contracts/types/Referral.sol +4 -0
  302. package/contracts/types/RoleId.sol +16 -9
  303. package/contracts/types/Seconds.sol +54 -0
  304. package/contracts/types/StateId.sol +7 -2
  305. package/contracts/types/Timestamp.sol +18 -13
  306. package/contracts/types/UFixed.sol +1 -0
  307. package/contracts/types/Version.sol +1 -0
  308. package/package.json +1 -1
  309. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  310. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  311. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  312. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  313. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  314. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  315. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  316. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  317. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  318. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  319. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  320. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  321. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  322. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  323. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  325. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  326. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  327. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  329. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  331. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  333. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  335. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  337. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  339. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  341. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  343. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  345. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  347. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  349. package/contracts/experiment/cloning/Cloner.sol +0 -47
  350. package/contracts/experiment/errors/Require.sol +0 -38
  351. package/contracts/experiment/errors/Revert.sol +0 -44
  352. package/contracts/experiment/inheritance/A.sol +0 -53
  353. package/contracts/experiment/inheritance/B.sol +0 -28
  354. package/contracts/experiment/inheritance/C.sol +0 -34
  355. package/contracts/experiment/inheritance/IA.sol +0 -13
  356. package/contracts/experiment/inheritance/IB.sol +0 -10
  357. package/contracts/experiment/inheritance/IC.sol +0 -12
  358. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  359. package/contracts/experiment/statemachine/ISM.sol +0 -25
  360. package/contracts/experiment/statemachine/SM.sol +0 -57
  361. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  362. package/contracts/experiment/types/TypeA.sol +0 -47
  363. package/contracts/experiment/types/TypeB.sol +0 -29
@@ -1,13 +1,41 @@
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
- import {NumberId} from "../../types/NumberId.sol";
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 {
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
+
38
+ /// @dev policy data for the full policy lifecycle
11
39
  struct PolicyInfo {
12
40
  NftId productNftId;
13
41
  NftId bundleNftId;
@@ -15,13 +43,13 @@ interface IPolicy {
15
43
  RiskId riskId;
16
44
  uint256 sumInsuredAmount;
17
45
  uint256 premiumAmount;
18
- uint256 premiumPaidAmount;
19
- uint256 lifetime;
46
+ uint256 premiumPaidAmount; // when lower than premium amount: max payout decreased accordingly
47
+ Seconds lifetime;
20
48
  bytes applicationData;
21
49
  bytes policyData;
22
50
  uint16 claimsCount;
23
51
  uint16 openClaimsCount;
24
- uint256 payoutAmount;
52
+ Amount payoutAmount;
25
53
  Timestamp activatedAt; // time of underwriting
26
54
  Timestamp expiredAt; // no new claims (activatedAt + lifetime)
27
55
  Timestamp closedAt; // no locked capital (or declinedAt)
@@ -29,16 +57,20 @@ interface IPolicy {
29
57
 
30
58
  // claimId neeeds to be encoded policyNftId:claimId combination
31
59
  struct ClaimInfo {
32
- uint256 claimAmount;
33
- uint256 paidAmount;
60
+ Amount claimAmount;
61
+ Amount paidAmount;
62
+ uint8 payoutsCount;
63
+ uint8 openPayoutsCount;
34
64
  bytes data;
35
- Timestamp closedAt; // payoment of confirmed claim amount (or declinedAt)
65
+ // TODO consider to add processData that may include information supporting confirm or decline
66
+ Timestamp closedAt; // payment of confirmed claim amount (or declinedAt)
36
67
  }
37
68
 
38
69
  // claimId neeeds to be encoded policyNftId:claimId combination
39
70
  struct PayoutInfo {
40
- NumberId claimId;
41
- uint256 amount;
71
+ ClaimId claimId;
72
+ Amount amount;
73
+ // TODO consider to add a beneficiary address that will be the receiver of the payout tokens
42
74
  bytes data;
43
75
  Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
44
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 {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,44 +37,31 @@ 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, 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
-
52
- function initialize(
59
+ function _initialize(
53
60
  address owner,
54
61
  bytes memory data
55
62
  )
56
- public
57
- virtual
63
+ internal
64
+ virtual override
58
65
  initializer()
59
66
  {
60
67
  // TODO check this, might no longer be the way, refactor if necessary
@@ -62,31 +69,39 @@ contract ApplicationService is
62
69
  address initialOwner;
63
70
  (registryAddress, initialOwner) = abi.decode(data, (address, address));
64
71
 
65
- initializeService(registryAddress, owner);
72
+ initializeService(registryAddress, address(0), owner);
66
73
  registerInterface(type(IApplicationService).interfaceId);
74
+
75
+ _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
76
+ _pricingService = IPricingService(_getServiceAddress(PRICE()));
77
+ }
78
+
79
+
80
+ function getDomain() public pure override returns(ObjectType) {
81
+ return APPLICATION();
67
82
  }
68
83
 
69
84
 
70
85
  function create(
71
86
  address applicationOwner,
72
87
  RiskId riskId,
88
+ uint256 sumInsuredAmount,
89
+ Seconds lifetime,
73
90
  NftId bundleNftId,
74
91
  ReferralId referralId,
75
- uint256 sumInsuredAmount,
76
- uint256 lifetime,
77
92
  bytes memory applicationData
78
93
  )
79
94
  external
80
- virtual override
95
+ virtual
81
96
  returns (NftId applicationNftId)
82
97
  {
83
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
98
+ (NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
84
99
  // TODO: add validations (see create bundle in pool service)
85
100
 
86
101
  applicationNftId = getRegistryService().registerPolicy(
87
102
  IRegistry.ObjectInfo(
88
103
  zeroNftId(),
89
- productInfo.nftId,
104
+ productNftId,
90
105
  POLICY(),
91
106
  false, // intercepting property for policies is defined on product
92
107
  address(0),
@@ -95,7 +110,9 @@ contract ApplicationService is
95
110
  )
96
111
  );
97
112
 
98
- (uint256 premiumAmount,,,,) = calculatePremium(
113
+ // (uint256 premiumAmount,,,,,) = calculatePremium(
114
+ IPolicy.Premium memory premium = _pricingService.calculatePremium(
115
+ productNftId,
99
116
  riskId,
100
117
  sumInsuredAmount,
101
118
  lifetime,
@@ -104,27 +121,26 @@ contract ApplicationService is
104
121
  referralId
105
122
  );
106
123
 
107
- IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
108
- productInfo.nftId,
109
- bundleNftId,
110
- referralId,
111
- riskId,
112
- sumInsuredAmount,
113
- premiumAmount,
114
- 0,
115
- lifetime,
116
- applicationData,
117
- "",
118
- 0,
119
- 0,
120
- 0,
121
- zeroTimestamp(),
122
- zeroTimestamp(),
123
- zeroTimestamp()
124
- );
124
+ IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo({
125
+ productNftId: productNftId,
126
+ bundleNftId: bundleNftId,
127
+ referralId: referralId,
128
+ riskId: riskId,
129
+ sumInsuredAmount: sumInsuredAmount,
130
+ premiumAmount: premium.premiumAmount,
131
+ premiumPaidAmount: 0,
132
+ lifetime: lifetime,
133
+ applicationData: applicationData,
134
+ policyData: "",
135
+ claimsCount: 0,
136
+ openClaimsCount: 0,
137
+ payoutAmount: AmountLib.zero(),
138
+ activatedAt: zeroTimestamp(),
139
+ expiredAt: zeroTimestamp(),
140
+ closedAt: zeroTimestamp()
141
+ });
125
142
 
126
- instance.createPolicy(applicationNftId, policyInfo);
127
- instance.updatePolicyState(applicationNftId, APPLIED());
143
+ instance.getInstanceStore().createApplication(applicationNftId, policyInfo);
128
144
 
129
145
  // TODO: add logging
130
146
  }
@@ -142,7 +158,7 @@ contract ApplicationService is
142
158
  }
143
159
 
144
160
 
145
- function ajust(
161
+ function adjust(
146
162
  NftId applicationNftId,
147
163
  RiskId riskId,
148
164
  NftId bundleNftId,
@@ -157,112 +173,13 @@ contract ApplicationService is
157
173
 
158
174
  }
159
175
 
160
- function revoke(NftId policyNftId)
176
+ function revoke(NftId applicationNftId)
161
177
  external
162
178
  virtual override
163
179
  {
164
-
180
+ (,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
181
+ instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());
165
182
  }
166
183
 
167
-
168
- function calculatePremium(
169
- RiskId riskId,
170
- uint256 sumInsuredAmount,
171
- uint256 lifetime,
172
- bytes memory applicationData,
173
- NftId bundleNftId,
174
- ReferralId referralId
175
- )
176
- public
177
- view
178
- virtual override
179
- returns (
180
- uint256 premiumAmount,
181
- uint256 distributionFeeAmount,
182
- uint256 productFeeAmount,
183
- uint256 poolFeeAmount,
184
- uint256 bundleFeeAmount
185
- )
186
- {
187
- Product product = _getAndVerifyInstanceAndProduct();
188
- uint256 netPremiumAmount = product.calculateNetPremium(
189
- sumInsuredAmount,
190
- riskId,
191
- lifetime,
192
- applicationData
193
- );
194
-
195
- (
196
- productFeeAmount,
197
- poolFeeAmount,
198
- bundleFeeAmount,
199
- distributionFeeAmount
200
- ) = _calculateFeeAmounts(
201
- netPremiumAmount,
202
- product,
203
- bundleNftId,
204
- referralId
205
- );
206
-
207
- premiumAmount = netPremiumAmount + productFeeAmount;
208
- premiumAmount += poolFeeAmount + bundleFeeAmount;
209
- premiumAmount += distributionFeeAmount;
210
- }
211
-
212
-
213
- function getDomain() public pure override(IService, Service) returns(ObjectType) {
214
- return APPLICATION();
215
- }
216
-
217
-
218
184
  // 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
- }
185
+ }
@@ -0,0 +1,35 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {ApplicationService} from "./ApplicationService.sol";
7
+
8
+ contract ApplicationServiceManager is ProxyManager {
9
+
10
+ ApplicationService private _applicationService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address registryAddress
15
+ )
16
+ ProxyManager(registryAddress)
17
+ {
18
+ ApplicationService svc = new ApplicationService();
19
+ bytes memory data = abi.encode(registryAddress, address(this));
20
+ IVersionable versionable = deploy(
21
+ address(svc),
22
+ data);
23
+
24
+ _applicationService = ApplicationService(address(versionable));
25
+ }
26
+
27
+ //--- view functions ----------------------------------------------------//
28
+ function getApplicationService()
29
+ external
30
+ view
31
+ returns (ApplicationService)
32
+ {
33
+ return _applicationService;
34
+ }
35
+ }