@etherisc/gif-next 0.0.2-e922e07-736 → 0.0.2-e964d24-516

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 (423) hide show
  1. package/README.md +6 -83
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +129 -14
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +203 -14
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +110 -283
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +68 -54
  14. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  15. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  16. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +309 -2078
  18. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  19. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +183 -76
  20. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  21. package/artifacts/contracts/instance/Instance.sol/Instance.json +434 -2823
  22. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  23. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +493 -129
  24. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  26. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +406 -192
  28. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +224 -291
  30. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +45 -82
  32. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  34. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  35. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  36. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  39. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +44 -14
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  47. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  52. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  54. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
  56. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  57. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +291 -189
  58. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  59. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +231 -165
  60. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  62. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  63. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +160 -204
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +708 -0
  68. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  70. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
  72. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1376 -0
  74. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
  76. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +184 -100
  78. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +743 -0
  80. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  81. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +211 -100
  82. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  83. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +120 -166
  84. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  85. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +210 -21
  86. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +86 -28
  88. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  90. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
  92. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  94. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  96. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  97. package/artifacts/contracts/{components → product}/Product.sol/Product.json +121 -22
  98. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  100. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  102. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  104. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -37
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +35 -16
  112. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +4 -4
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +26 -53
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -40
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +30 -18
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
  122. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  123. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  124. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  125. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +106 -7
  126. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  127. package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +114 -35
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  129. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  130. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +196 -7
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  133. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  137. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  139. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  140. package/artifacts/contracts/shared/IService.sol/IService.json +85 -27
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +8 -21
  144. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
  146. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +20 -33
  148. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -21
  150. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  152. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  153. package/artifacts/contracts/shared/Service.sol/Service.json +91 -28
  154. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  156. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  158. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  159. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  160. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +523 -0
  161. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  162. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +628 -0
  163. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  164. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
  165. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  166. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  167. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  168. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  169. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  170. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  171. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  172. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  173. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  174. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  175. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  176. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  177. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  178. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  179. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  180. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  181. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  182. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  183. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  184. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  185. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  186. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  187. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  188. package/artifacts/contracts/{types → type}/Referral.sol/ReferralLib.json +5 -5
  189. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  190. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  191. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  192. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  193. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  194. package/artifacts/contracts/{types → type}/Seconds.sol/SecondsLib.json +3 -3
  195. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  197. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  198. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +20 -7
  199. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  200. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  201. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  202. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  203. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  204. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  205. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  206. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  207. package/contracts/{components → distribution}/Distribution.sol +21 -16
  208. package/contracts/distribution/DistributionService.sol +348 -0
  209. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +5 -5
  210. package/contracts/{components → distribution}/IDistributionComponent.sol +7 -7
  211. package/contracts/{instance/service → distribution}/IDistributionService.sol +19 -30
  212. package/contracts/instance/BundleManager.sol +13 -12
  213. package/contracts/instance/Cloneable.sol +7 -2
  214. package/contracts/instance/IInstance.sol +48 -63
  215. package/contracts/instance/IInstanceService.sol +31 -17
  216. package/contracts/instance/Instance.sol +131 -193
  217. package/contracts/instance/InstanceAccessManager.sol +405 -161
  218. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  219. package/contracts/instance/InstanceReader.sol +101 -26
  220. package/contracts/instance/InstanceService.sol +173 -354
  221. package/contracts/instance/InstanceServiceManager.sol +1 -1
  222. package/contracts/instance/InstanceStore.sol +211 -0
  223. package/contracts/instance/ObjectManager.sol +9 -11
  224. package/contracts/instance/base/IKeyValueStore.sol +5 -5
  225. package/contracts/instance/base/ILifecycle.sol +3 -3
  226. package/contracts/instance/base/KeyValueStore.sol +18 -41
  227. package/contracts/instance/base/Lifecycle.sol +27 -7
  228. package/contracts/instance/module/IAccess.sol +23 -16
  229. package/contracts/instance/module/IBundle.sol +10 -8
  230. package/contracts/instance/module/IComponents.sol +41 -0
  231. package/contracts/instance/module/IDistribution.sol +7 -6
  232. package/contracts/instance/module/IPolicy.sol +19 -14
  233. package/contracts/instance/module/IRisk.sol +1 -1
  234. package/contracts/instance/module/ISetup.sol +5 -18
  235. package/contracts/instance/module/ITreasury.sol +2 -2
  236. package/contracts/pool/BundleService.sol +382 -0
  237. package/contracts/{instance/service → pool}/BundleServiceManager.sol +5 -5
  238. package/contracts/pool/IBundleService.sol +118 -0
  239. package/contracts/{components → pool}/IPoolComponent.sol +19 -56
  240. package/contracts/pool/IPoolService.sol +114 -0
  241. package/contracts/{components → pool}/Pool.sol +62 -138
  242. package/contracts/pool/PoolService.sol +403 -0
  243. package/contracts/{instance/service → pool}/PoolServiceManager.sol +5 -5
  244. package/contracts/product/ApplicationService.sol +186 -0
  245. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +2 -2
  246. package/contracts/product/ClaimService.sol +437 -0
  247. package/contracts/{instance/service → product}/ClaimServiceManager.sol +2 -2
  248. package/contracts/{instance/service → product}/IApplicationService.sol +14 -34
  249. package/contracts/product/IClaimService.sol +90 -0
  250. package/contracts/{instance/service → product}/IPolicyService.sol +34 -26
  251. package/contracts/product/IPricingService.sol +37 -0
  252. package/contracts/{components → product}/IProductComponent.sol +11 -10
  253. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  254. package/contracts/product/PolicyService.sol +376 -0
  255. package/contracts/{instance/service → product}/PolicyServiceManager.sol +5 -5
  256. package/contracts/product/PricingService.sol +275 -0
  257. package/contracts/product/PricingServiceManager.sol +51 -0
  258. package/contracts/{components → product}/Product.sol +160 -74
  259. package/contracts/product/ProductService.sol +210 -0
  260. package/contracts/{instance/service → product}/ProductServiceManager.sol +5 -5
  261. package/contracts/registry/ChainNft.sol +8 -0
  262. package/contracts/registry/IRegistry.sol +6 -4
  263. package/contracts/registry/IRegistryService.sol +6 -7
  264. package/contracts/registry/ITransferInterceptor.sol +1 -0
  265. package/contracts/registry/Registry.sol +26 -23
  266. package/contracts/registry/RegistryAccessManager.sol +1 -1
  267. package/contracts/registry/RegistryService.sol +33 -31
  268. package/contracts/registry/RegistryServiceManager.sol +0 -2
  269. package/contracts/registry/ReleaseManager.sol +24 -22
  270. package/contracts/registry/TokenRegistry.sol +2 -2
  271. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  272. package/contracts/{components → shared}/Component.sol +68 -18
  273. package/contracts/shared/ComponentService.sol +150 -0
  274. package/contracts/{components → shared}/IComponent.sol +28 -6
  275. package/contracts/shared/INftOwnable.sol +1 -1
  276. package/contracts/shared/IPolicyHolder.sol +24 -10
  277. package/contracts/shared/IRegistryLinked.sol +0 -1
  278. package/contracts/shared/IService.sol +6 -6
  279. package/contracts/shared/IVersionable.sol +1 -1
  280. package/contracts/shared/NftOwnable.sol +1 -3
  281. package/contracts/shared/PolicyHolder.sol +31 -18
  282. package/contracts/shared/ProxyManager.sol +3 -3
  283. package/contracts/shared/Registerable.sol +12 -11
  284. package/contracts/shared/RegistryLinked.sol +0 -5
  285. package/contracts/shared/Service.sol +23 -9
  286. package/contracts/shared/TokenHandler.sol +14 -6
  287. package/contracts/shared/Versionable.sol +1 -1
  288. package/contracts/staking/IStakingService.sol +102 -0
  289. package/contracts/staking/StakeingServiceManager.sol +37 -0
  290. package/contracts/staking/StakingService.sol +166 -0
  291. package/contracts/type/Amount.sol +109 -0
  292. package/contracts/{types → type}/Blocknumber.sol +1 -0
  293. package/contracts/{types → type}/ClaimId.sol +25 -2
  294. package/contracts/{types → type}/Fee.sol +17 -8
  295. package/contracts/{types → type}/NftId.sol +8 -0
  296. package/contracts/{types → type}/NftIdSet.sol +1 -1
  297. package/contracts/{types → type}/ObjectType.sol +10 -5
  298. package/contracts/{types → type}/PayoutId.sol +33 -5
  299. package/contracts/{types → type}/RoleId.sol +6 -4
  300. package/contracts/{types → type}/StateId.sol +7 -2
  301. package/contracts/{types → type}/Timestamp.sol +6 -0
  302. package/contracts/{types → type}/UFixed.sol +1 -0
  303. package/contracts/{types → type}/Version.sol +1 -0
  304. package/package.json +1 -1
  305. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  306. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  307. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  308. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  309. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  310. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  311. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  312. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  313. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  314. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  315. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
  316. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  317. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  318. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  319. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1096
  320. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  321. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  322. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  323. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  324. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  325. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  326. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  327. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1724
  328. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  329. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -801
  330. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  331. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  332. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  333. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  334. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  335. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  336. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -347
  337. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  338. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  339. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
  340. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  341. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  342. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  343. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  344. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  345. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
  346. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  347. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  348. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  349. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  350. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  351. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  352. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  353. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  354. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  355. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  356. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  357. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  358. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  359. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  360. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  361. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  362. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  363. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  364. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  365. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  366. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  367. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  368. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  369. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  370. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  371. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  372. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  373. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  374. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  375. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  376. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  377. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  378. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  379. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  380. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  381. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  382. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  383. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  384. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  385. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  386. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  387. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  388. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  389. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  390. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  391. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  392. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  393. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  394. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  395. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  396. package/contracts/instance/base/ComponentService.sol +0 -134
  397. package/contracts/instance/service/ApplicationService.sol +0 -349
  398. package/contracts/instance/service/BundleService.sol +0 -299
  399. package/contracts/instance/service/ClaimService.sol +0 -151
  400. package/contracts/instance/service/DistributionService.sol +0 -450
  401. package/contracts/instance/service/IBundleService.sol +0 -55
  402. package/contracts/instance/service/IClaimService.sol +0 -61
  403. package/contracts/instance/service/IPoolService.sol +0 -20
  404. package/contracts/instance/service/PolicyService.sol +0 -394
  405. package/contracts/instance/service/PoolService.sol +0 -109
  406. package/contracts/instance/service/ProductService.sol +0 -233
  407. package/contracts/shared/ContractDeployerLib.sol +0 -72
  408. package/contracts/test/TestFee.sol +0 -25
  409. package/contracts/test/TestRegisterable.sol +0 -18
  410. package/contracts/test/TestRoleId.sol +0 -14
  411. package/contracts/test/TestService.sol +0 -25
  412. package/contracts/test/TestToken.sol +0 -26
  413. package/contracts/test/TestVersion.sol +0 -44
  414. package/contracts/test/TestVersionable.sol +0 -17
  415. package/contracts/test/Usdc.sol +0 -26
  416. package/contracts/types/ChainId.sol +0 -38
  417. package/contracts/types/NumberId.sol +0 -52
  418. /package/contracts/{types → type}/AddressSet.sol +0 -0
  419. /package/contracts/{types → type}/DistributorType.sol +0 -0
  420. /package/contracts/{types → type}/Key32.sol +0 -0
  421. /package/contracts/{types → type}/Referral.sol +0 -0
  422. /package/contracts/{types → type}/RiskId.sol +0 -0
  423. /package/contracts/{types → type}/Seconds.sol +0 -0
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/6de31a9fa359724de841ac23a6f4e434.json"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/6de31a9fa359724de841ac23a6f4e434.json"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/6de31a9fa359724de841ac23a6f4e434.json"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/6de31a9fa359724de841ac23a6f4e434.json"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/6de31a9fa359724de841ac23a6f4e434.json"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/6de31a9fa359724de841ac23a6f4e434.json"
4
- }
@@ -1,134 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IComponent} from "../../components/IComponent.sol";
5
- import {IRegistry} from "../../registry/IRegistry.sol";
6
- import {IRegistryService} from "../../registry/IRegistryService.sol";
7
- import {IInstance} from "../../instance/IInstance.sol";
8
- import {IAccess} from "../module/IAccess.sol";
9
- import {ObjectType, INSTANCE, REGISTRY} from "../../types/ObjectType.sol";
10
- import {NftId} from "../../types/NftId.sol";
11
- import {RoleId} from "../../types/RoleId.sol";
12
-
13
- import {Service} from "../../shared/Service.sol";
14
- import {InstanceService} from "../InstanceService.sol";
15
- import {InstanceAccessManager} from "../InstanceAccessManager.sol";
16
-
17
- abstract contract ComponentService is Service {
18
-
19
- error ErrorComponentServiceAlreadyRegistered(address component, NftId nftId);
20
- error ErrorComponentServiceNotComponent(address component);
21
- error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
22
- error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
23
- error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
24
- error ErrorComponentServiceComponentLocked(address component);
25
-
26
- /// @dev modifier to check if caller is a registered service
27
- modifier onlyService() {
28
- address caller = msg.sender;
29
- require(getRegistry().isRegisteredService(caller), "ERROR_NOT_SERVICE");
30
- _;
31
- }
32
-
33
- // view functions
34
-
35
- function getRegistryService() public view virtual returns (IRegistryService) {
36
- address service = getRegistry().getServiceAddress(REGISTRY(), getMajorVersion());
37
- return IRegistryService(service);
38
- }
39
-
40
- function getInstanceService() public view returns (InstanceService) {
41
- address service = getRegistry().getServiceAddress(INSTANCE(), getMajorVersion());
42
- return InstanceService(service);
43
- }
44
-
45
- // internal functions
46
- function _checkComponentForRegistration(
47
- address componentAddress,
48
- ObjectType requiredType,
49
- RoleId requiredRole
50
- )
51
- internal
52
- view
53
- returns (
54
- IComponent component,
55
- address owner,
56
- IInstance instance,
57
- NftId instanceNftId
58
- )
59
- {
60
- // component may only be registerd by initial owner of component
61
- owner = msg.sender;
62
-
63
- // check component has not already been registerd
64
- NftId compoentNftId = getRegistry().getNftId(componentAddress);
65
- if(compoentNftId.gtz()) {
66
- revert ErrorComponentServiceAlreadyRegistered(componentAddress, compoentNftId);
67
- }
68
-
69
- // check this is a component
70
- component = IComponent(componentAddress);
71
- if(!component.supportsInterface(type(IComponent).interfaceId)) {
72
- revert ErrorComponentServiceNotComponent(componentAddress);
73
- }
74
-
75
- // check component is of required type
76
- IRegistry.ObjectInfo memory componentInfo = component.getInitialInfo();
77
- if(componentInfo.objectType != requiredType) {
78
- revert ErrorComponentServiceInvalidType(componentAddress, requiredType, componentInfo.objectType);
79
- }
80
-
81
- // check msg.sender is component owner
82
- address initialOwner = componentInfo.initialOwner;
83
- if(owner != initialOwner) {
84
- revert ErrorComponentServiceSenderNotOwner(componentAddress, componentInfo.initialOwner, owner);
85
- }
86
-
87
- // check instance has assigned required role to owner
88
- instanceNftId = componentInfo.parentNftId;
89
- instance = _getInstance(instanceNftId);
90
- bool hasRole = getInstanceService().hasRole(
91
- owner,
92
- requiredRole,
93
- address(instance));
94
-
95
- if(!hasRole) {
96
- revert ErrorComponentServiceExpectedRoleMissing(instanceNftId, requiredRole, owner);
97
- }
98
- }
99
-
100
- // internal view functions
101
-
102
- function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
103
- IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
104
- return IInstance(instanceInfo.objectAddress);
105
- }
106
-
107
- function _getAndVerifyComponentInfoAndInstance(
108
- //address component,
109
- ObjectType expectedType
110
- )
111
- internal
112
- view
113
- returns(
114
- IRegistry.ObjectInfo memory info,
115
- IInstance instance
116
- )
117
- {
118
- IRegistry registry = getRegistry();
119
- //TODO redundant check -> just check type
120
- //NftId componentNftId = registry.getNftId(component);
121
- //require(componentNftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
122
-
123
- info = registry.getObjectInfo(msg.sender);
124
- require(info.objectType == expectedType, "OBJECT_TYPE_INVALID");
125
-
126
- address instanceAddress = registry.getObjectInfo(info.parentNftId).objectAddress;
127
- instance = IInstance(instanceAddress);
128
-
129
- InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
130
- if (accessManager.isTargetLocked(info.objectAddress)) {
131
- revert IAccess.ErrorIAccessTargetLocked(info.objectAddress);
132
- }
133
- }
134
- }
@@ -1,349 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRisk} from "../module/IRisk.sol";
5
- import {IService} from "./IApplicationService.sol";
6
-
7
- import {IRegistry} from "../../registry/IRegistry.sol";
8
- import {IProductComponent} from "../../components/IProductComponent.sol";
9
- import {Product} from "../../components/Product.sol";
10
- import {IPoolComponent} from "../../components/IPoolComponent.sol";
11
- import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
12
- import {IInstance} from "../IInstance.sol";
13
- import {IPolicy} from "../module/IPolicy.sol";
14
- import {IRisk} from "../module/IRisk.sol";
15
- import {IBundle} from "../module/IBundle.sol";
16
- import {IProductService} from "./IProductService.sol";
17
- import {ITreasury} from "../module/ITreasury.sol";
18
- import {ISetup} from "../module/ISetup.sol";
19
-
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 {Seconds} from "../../types/Seconds.sol";
26
- import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
27
- import {UFixed, UFixedLib} from "../../types/UFixed.sol";
28
- import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
29
- import {ObjectType, DISTRIBUTION, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
30
- import {APPLIED, REVOKED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
31
- import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
32
- import {Fee, FeeLib} from "../../types/Fee.sol";
33
- import {ReferralId} from "../../types/Referral.sol";
34
- import {RiskId} from "../../types/RiskId.sol";
35
- import {StateId} from "../../types/StateId.sol";
36
- import {Version, VersionLib} from "../../types/Version.sol";
37
-
38
- import {ComponentService} from "../base/ComponentService.sol";
39
- import {InstanceReader} from "../InstanceReader.sol";
40
- import {IApplicationService} from "./IApplicationService.sol";
41
- import {IBundleService} from "./IBundleService.sol";
42
- import {IDistributionService} from "./IDistributionService.sol";
43
- import {IPoolService} from "./IPoolService.sol";
44
- import {IService} from "../../shared/IService.sol";
45
- import {Service} from "../../shared/Service.sol";
46
-
47
-
48
- contract ApplicationService is
49
- ComponentService,
50
- IApplicationService
51
- {
52
- IDistributionService internal _distributionService;
53
-
54
- function _initialize(
55
- address owner,
56
- bytes memory data
57
- )
58
- internal
59
- virtual override
60
- initializer()
61
- {
62
- // TODO check this, might no longer be the way, refactor if necessary
63
- address registryAddress;
64
- address initialOwner;
65
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
66
-
67
- initializeService(registryAddress, owner);
68
- registerInterface(type(IApplicationService).interfaceId);
69
-
70
- _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), getMajorVersion()));
71
- }
72
-
73
-
74
- function getDomain() public pure override(IService, Service) returns(ObjectType) {
75
- return APPLICATION();
76
- }
77
-
78
-
79
- function create(
80
- address applicationOwner,
81
- RiskId riskId,
82
- uint256 sumInsuredAmount,
83
- Seconds lifetime,
84
- NftId bundleNftId,
85
- ReferralId referralId,
86
- bytes memory applicationData
87
- )
88
- external
89
- virtual
90
- returns (NftId applicationNftId)
91
- {
92
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
93
- // TODO: add validations (see create bundle in pool service)
94
-
95
- applicationNftId = getRegistryService().registerPolicy(
96
- IRegistry.ObjectInfo(
97
- zeroNftId(),
98
- productInfo.nftId,
99
- POLICY(),
100
- false, // intercepting property for policies is defined on product
101
- address(0),
102
- applicationOwner,
103
- ""
104
- )
105
- );
106
-
107
- // (uint256 premiumAmount,,,,,) = calculatePremium(
108
- IPolicy.Premium memory premium = calculatePremium(
109
- productInfo.nftId,
110
- riskId,
111
- sumInsuredAmount,
112
- lifetime,
113
- applicationData,
114
- bundleNftId,
115
- referralId
116
- );
117
-
118
- IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
119
- productInfo.nftId,
120
- bundleNftId,
121
- referralId,
122
- riskId,
123
- sumInsuredAmount,
124
- premium.premiumAmount,
125
- 0,
126
- lifetime,
127
- applicationData,
128
- "",
129
- 0,
130
- 0,
131
- 0,
132
- zeroTimestamp(),
133
- zeroTimestamp(),
134
- zeroTimestamp()
135
- );
136
-
137
- instance.createApplication(applicationNftId, policyInfo);
138
- instance.updateApplicationState(applicationNftId, APPLIED());
139
-
140
- // TODO: add logging
141
- }
142
-
143
-
144
- function renew(
145
- NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
146
- NftId bundleNftId // will likely need a newer bundle for underwriting
147
- )
148
- external
149
- virtual override
150
- returns (NftId applicationNftId)
151
- {
152
-
153
- }
154
-
155
-
156
- function adjust(
157
- NftId applicationNftId,
158
- RiskId riskId,
159
- NftId bundleNftId,
160
- ReferralId referralId,
161
- uint256 sumInsuredAmount,
162
- uint256 lifetime,
163
- bytes memory applicationData
164
- )
165
- external
166
- virtual override
167
- {
168
-
169
- }
170
-
171
- function revoke(NftId applicationNftId)
172
- external
173
- virtual override
174
- {
175
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
176
- instance.updateApplicationState(applicationNftId, REVOKED());
177
- }
178
-
179
- // TODO: maybe move this to a pricing service later
180
- function calculatePremium(
181
- NftId productNftId,
182
- RiskId riskId,
183
- uint256 sumInsuredAmount,
184
- Seconds lifetime,
185
- bytes memory applicationData,
186
- NftId bundleNftId,
187
- ReferralId referralId
188
- )
189
- public
190
- view
191
- virtual override
192
- returns (
193
- IPolicy.Premium memory premium
194
- )
195
- {
196
- uint256 netPremiumAmount = _getAndVerifyProduct(productNftId).calculateNetPremium(
197
- sumInsuredAmount,
198
- riskId,
199
- lifetime,
200
- applicationData
201
- );
202
-
203
- premium = _getFixedFeeAmounts(
204
- netPremiumAmount,
205
- _getAndVerifyProduct(productNftId),
206
- bundleNftId,
207
- referralId
208
- );
209
-
210
- (
211
- premium
212
- ) = _calculateVariableFeeAmounts(
213
- premium,
214
- _getAndVerifyProduct(productNftId),
215
- bundleNftId,
216
- referralId
217
- );
218
- }
219
-
220
-
221
- // internal functions
222
- function _getFixedFeeAmounts(
223
- uint256 netPremiumAmount,
224
- Product product,
225
- NftId bundleNftId,
226
- ReferralId referralId
227
- )
228
- internal
229
- view
230
- returns (
231
- IPolicy.Premium memory premium
232
- )
233
- {
234
- InstanceReader instanceReader;
235
- {
236
- IInstance instance = product.getInstance();
237
- instanceReader = instance.getInstanceReader();
238
- }
239
-
240
- NftId poolNftId = product.getPoolNftId();
241
- premium = IPolicy.Premium(
242
- netPremiumAmount, // net premium
243
- netPremiumAmount, // full premium
244
- 0, // premium
245
- 0, 0, 0, 0, // fix fees
246
- 0, 0, 0, 0, // variable fees
247
- 0, 0, 0, 0); // distribution owner fee/commission/discount
248
-
249
- {
250
- {
251
- ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
252
- uint256 t = productSetupInfo.productFee.fixedFee;
253
- premium.productFeeFixAmount = t;
254
- premium.fullPremiumAmount += t;
255
- }
256
- {
257
- ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
258
- uint256 t = poolSetupInfo.poolFee.fixedFee;
259
- premium.poolFeeFixAmount = t;
260
- premium.fullPremiumAmount += t;
261
- }
262
- {
263
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
264
- if(bundleInfo.poolNftId != poolNftId) {
265
- revert IApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
266
- }
267
- uint256 t = bundleInfo.fee.fixedFee;
268
- premium.bundleFeeFixAmount = t;
269
- premium.fullPremiumAmount += t;
270
- }
271
- {
272
- ISetup.DistributionSetupInfo memory distInto = instanceReader.getDistributionSetupInfo(product.getDistributionNftId());
273
- uint256 t = distInto.distributionFee.fixedFee;
274
- premium.distributionFeeFixAmount = t;
275
- premium.fullPremiumAmount += t;
276
- }
277
- }
278
-
279
- }
280
-
281
- function _calculateVariableFeeAmounts(
282
- IPolicy.Premium memory premium,
283
- Product product,
284
- NftId bundleNftId,
285
- ReferralId referralId
286
- )
287
- internal
288
- view
289
- returns (
290
- IPolicy.Premium memory finalPremium
291
- )
292
- {
293
- InstanceReader instanceReader;
294
- {
295
- IInstance instance = product.getInstance();
296
- instanceReader = instance.getInstanceReader();
297
- }
298
-
299
- NftId poolNftId = product.getPoolNftId();
300
- uint256 netPremiumAmount = premium.netPremiumAmount;
301
-
302
- {
303
- {
304
- ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
305
- uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * productSetupInfo.productFee.fractionalFee).toInt();
306
- premium.productFeeVarAmount = t;
307
- premium.fullPremiumAmount += t;
308
- }
309
- {
310
- ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
311
- uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * poolSetupInfo.poolFee.fractionalFee).toInt();
312
- premium.poolFeeVarAmount = t;
313
- premium.fullPremiumAmount += t;
314
- }
315
- {
316
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
317
- if(bundleInfo.poolNftId != poolNftId) {
318
- revert IApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
319
- }
320
- uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * bundleInfo.fee.fractionalFee).toInt();
321
- premium.bundleFeeVarAmount = t;
322
- premium.fullPremiumAmount += t;
323
- }
324
- {
325
- premium = _distributionService.calculateFeeAmount(
326
- product.getDistributionNftId(),
327
- referralId,
328
- premium
329
- );
330
- }
331
- }
332
-
333
- return premium;
334
- }
335
-
336
-
337
- function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
338
- IRegistry.ObjectInfo memory productInfo;
339
- (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
340
- product = Product(productInfo.objectAddress);
341
- }
342
-
343
- function _getAndVerifyProduct(NftId productNftId) internal view returns (Product product) {
344
- IRegistry registry = getRegistry();
345
- IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productNftId);
346
- require(productInfo.objectType == PRODUCT(), "OBJECT_TYPE_INVALID");
347
- product = Product(productInfo.objectAddress);
348
- }
349
- }