@etherisc/gif-next 0.0.2-9682fee-392 → 0.0.2-96b5b72-170

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 (437) 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 +82 -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 +156 -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 +6 -6
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +310 -2004
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +101 -52
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +430 -2762
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +99 -62
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +366 -71
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +157 -211
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +45 -90
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -1
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +61 -12
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +8 -8
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol}/ObjectManager.json +3 -3
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +6 -6
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  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 +234 -129
  58. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  59. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +173 -21
  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 +83 -21
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1630 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +712 -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 +1386 -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 +753 -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 +163 -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 +74 -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 +2 -2
  104. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +48 -0
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +66 -37
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/Registry.sol/Registry.json +77 -16
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  112. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +20 -20
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +87 -53
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -40
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +95 -22
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
  121. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  122. package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
  123. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  124. package/artifacts/contracts/shared/Component.sol/Component.json +723 -0
  125. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  126. package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +114 -35
  127. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/IComponent.sol/IComponent.json} +177 -142
  130. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  131. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +647 -0
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IService.sol/IService.json +85 -27
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  144. package/artifacts/contracts/{components/Component.sol/Component.json → shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json} +60 -8
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +8 -21
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  148. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +20 -33
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -21
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  154. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  155. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Service.sol/Service.json +91 -28
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  158. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  160. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  162. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  163. package/artifacts/contracts/{components/IComponent.sol/IComponent.json → staking/IStaking.sol/IStaking.json} +123 -121
  164. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  165. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +545 -0
  166. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  167. package/artifacts/contracts/staking/Staking.sol/Staking.json +854 -0
  168. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  169. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +640 -0
  170. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  171. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +797 -0
  172. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  173. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +632 -0
  174. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  175. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  176. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  177. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  178. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  179. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  180. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  181. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  182. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  183. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  184. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  185. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  186. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  187. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  188. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  189. package/artifacts/contracts/{types → type}/NftId.sol/NftIdLib.json +5 -5
  190. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  191. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  192. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  193. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  194. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  195. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  196. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  197. package/artifacts/contracts/{types → type}/Referral.sol/ReferralLib.json +5 -5
  198. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  200. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  201. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  202. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  203. package/artifacts/contracts/{types → type}/Seconds.sol/SecondsLib.json +3 -3
  204. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  206. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  207. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +20 -7
  208. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  209. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  210. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  211. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  212. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  213. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  214. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  215. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  216. package/contracts/{components → distribution}/Distribution.sol +22 -17
  217. package/contracts/distribution/DistributionService.sol +349 -0
  218. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +5 -5
  219. package/contracts/{components → distribution}/IDistributionComponent.sol +8 -8
  220. package/contracts/{instance/service → distribution}/IDistributionService.sol +19 -30
  221. package/contracts/instance/BundleManager.sol +8 -9
  222. package/contracts/instance/IInstance.sol +43 -64
  223. package/contracts/instance/IInstanceService.sol +18 -17
  224. package/contracts/instance/Instance.sol +116 -214
  225. package/contracts/instance/InstanceAccessManager.sol +49 -28
  226. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  227. package/contracts/instance/InstanceReader.sol +96 -18
  228. package/contracts/instance/InstanceService.sol +103 -290
  229. package/contracts/instance/InstanceServiceManager.sol +1 -1
  230. package/contracts/instance/InstanceStore.sol +211 -0
  231. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +1 -1
  232. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  233. package/contracts/instance/base/ILifecycle.sol +3 -3
  234. package/contracts/instance/base/KeyValueStore.sol +39 -45
  235. package/contracts/instance/base/Lifecycle.sol +17 -5
  236. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +7 -7
  237. package/contracts/instance/module/IAccess.sol +4 -4
  238. package/contracts/instance/module/IBundle.sol +10 -8
  239. package/contracts/instance/module/IComponents.sol +11 -5
  240. package/contracts/instance/module/IDistribution.sol +7 -6
  241. package/contracts/instance/module/IPolicy.sol +22 -16
  242. package/contracts/instance/module/IRisk.sol +1 -1
  243. package/contracts/instance/module/ISetup.sol +4 -4
  244. package/contracts/instance/module/ITreasury.sol +2 -2
  245. package/contracts/pool/BundleService.sol +382 -0
  246. package/contracts/{instance/service → pool}/BundleServiceManager.sol +5 -5
  247. package/contracts/pool/IBundleService.sol +118 -0
  248. package/contracts/{components → pool}/IPoolComponent.sol +15 -14
  249. package/contracts/pool/IPoolService.sol +114 -0
  250. package/contracts/{components → pool}/Pool.sol +26 -23
  251. package/contracts/pool/PoolService.sol +403 -0
  252. package/contracts/{instance/service → pool}/PoolServiceManager.sol +5 -5
  253. package/contracts/product/ApplicationService.sol +186 -0
  254. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +2 -2
  255. package/contracts/product/ClaimService.sol +442 -0
  256. package/contracts/{instance/service → product}/ClaimServiceManager.sol +2 -2
  257. package/contracts/{instance/service → product}/IApplicationService.sol +14 -34
  258. package/contracts/product/IClaimService.sol +93 -0
  259. package/contracts/{instance/service → product}/IPolicyService.sol +34 -26
  260. package/contracts/product/IPricingService.sol +37 -0
  261. package/contracts/{components → product}/IProductComponent.sol +12 -11
  262. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  263. package/contracts/product/PolicyService.sol +376 -0
  264. package/contracts/{instance/service → product}/PolicyServiceManager.sol +5 -5
  265. package/contracts/product/PricingService.sol +275 -0
  266. package/contracts/product/PricingServiceManager.sol +51 -0
  267. package/contracts/{components → product}/Product.sol +161 -75
  268. package/contracts/product/ProductService.sol +210 -0
  269. package/contracts/{instance/service → product}/ProductServiceManager.sol +5 -5
  270. package/contracts/registry/ChainNft.sol +7 -1
  271. package/contracts/registry/IRegistry.sol +15 -6
  272. package/contracts/registry/IRegistryService.sol +10 -8
  273. package/contracts/registry/Registry.sol +45 -7
  274. package/contracts/registry/RegistryAccessManager.sol +6 -15
  275. package/contracts/registry/RegistryService.sol +52 -31
  276. package/contracts/registry/RegistryServiceManager.sol +0 -2
  277. package/contracts/registry/ReleaseManager.sol +78 -40
  278. package/contracts/registry/TokenRegistry.sol +2 -2
  279. package/contracts/shared/Component.sol +177 -0
  280. package/contracts/shared/ComponentService.sol +150 -0
  281. package/contracts/shared/IComponent.sol +58 -0
  282. package/contracts/{components/IComponent.sol → shared/IInstanceLinkedComponent.sol} +9 -31
  283. package/contracts/shared/INftOwnable.sol +1 -1
  284. package/contracts/shared/IPolicyHolder.sol +24 -10
  285. package/contracts/shared/IRegistryLinked.sol +0 -1
  286. package/contracts/shared/IService.sol +6 -6
  287. package/contracts/shared/IVersionable.sol +1 -1
  288. package/contracts/{components/Component.sol → shared/InstanceLinkedComponent.sol} +35 -15
  289. package/contracts/shared/NftOwnable.sol +1 -3
  290. package/contracts/shared/PolicyHolder.sol +31 -18
  291. package/contracts/shared/ProxyManager.sol +3 -3
  292. package/contracts/shared/Registerable.sol +12 -11
  293. package/contracts/shared/RegistryLinked.sol +0 -5
  294. package/contracts/shared/Service.sol +23 -9
  295. package/contracts/shared/TokenHandler.sol +27 -2
  296. package/contracts/shared/Versionable.sol +1 -1
  297. package/contracts/staking/IStaking.sol +30 -0
  298. package/contracts/staking/IStakingService.sol +105 -0
  299. package/contracts/staking/Staking.sol +65 -0
  300. package/contracts/staking/StakingManager.sol +46 -0
  301. package/contracts/staking/StakingService.sol +204 -0
  302. package/contracts/staking/StakingServiceManager.sol +41 -0
  303. package/contracts/type/Amount.sol +109 -0
  304. package/contracts/{types → type}/ClaimId.sol +25 -2
  305. package/contracts/{types → type}/Fee.sol +16 -8
  306. package/contracts/{types → type}/NftIdSet.sol +1 -1
  307. package/contracts/{types → type}/ObjectType.sol +14 -5
  308. package/contracts/{types → type}/PayoutId.sol +33 -5
  309. package/contracts/{types → type}/RoleId.sol +44 -9
  310. package/contracts/{types → type}/StateId.sol +6 -2
  311. package/contracts/{types → type}/Timestamp.sol +5 -0
  312. package/package.json +1 -1
  313. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  314. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  315. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  316. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  317. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  318. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  319. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  320. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  321. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  322. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  323. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  324. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  325. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  326. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
  327. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  328. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  329. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  330. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
  331. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  332. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  333. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  334. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  335. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  336. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  337. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  338. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1732
  339. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  340. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  341. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  342. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  343. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  344. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  345. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  346. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  347. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  348. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  349. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
  350. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  351. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  352. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  353. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -824
  354. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  355. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -657
  356. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  357. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  358. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  359. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  360. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  361. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  362. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  363. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  364. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  365. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  366. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  367. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  368. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  369. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  370. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  371. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  372. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  373. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  374. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  375. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  376. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  377. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  378. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  379. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  380. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  381. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  382. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  383. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  384. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  385. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  386. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  387. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  388. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  389. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  390. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  391. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  392. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  393. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  394. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  395. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  396. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  397. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  398. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  399. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  400. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  401. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  402. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  403. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  404. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  405. package/contracts/instance/base/ComponentService.sol +0 -134
  406. package/contracts/instance/service/ApplicationService.sol +0 -350
  407. package/contracts/instance/service/BundleService.sol +0 -336
  408. package/contracts/instance/service/ClaimService.sol +0 -151
  409. package/contracts/instance/service/DistributionService.sol +0 -467
  410. package/contracts/instance/service/IBundleService.sol +0 -62
  411. package/contracts/instance/service/IClaimService.sol +0 -61
  412. package/contracts/instance/service/IPoolService.sol +0 -35
  413. package/contracts/instance/service/PolicyService.sol +0 -403
  414. package/contracts/instance/service/PoolService.sol +0 -220
  415. package/contracts/instance/service/ProductService.sol +0 -241
  416. package/contracts/shared/ContractDeployerLib.sol +0 -72
  417. package/contracts/test/TestFee.sol +0 -25
  418. package/contracts/test/TestRegisterable.sol +0 -18
  419. package/contracts/test/TestRoleId.sol +0 -14
  420. package/contracts/test/TestService.sol +0 -25
  421. package/contracts/test/TestToken.sol +0 -26
  422. package/contracts/test/TestVersion.sol +0 -44
  423. package/contracts/test/TestVersionable.sol +0 -17
  424. package/contracts/test/Usdc.sol +0 -26
  425. package/contracts/types/ChainId.sol +0 -38
  426. package/contracts/types/NumberId.sol +0 -52
  427. /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
  428. /package/contracts/{types → type}/AddressSet.sol +0 -0
  429. /package/contracts/{types → type}/Blocknumber.sol +0 -0
  430. /package/contracts/{types → type}/DistributorType.sol +0 -0
  431. /package/contracts/{types → type}/Key32.sol +0 -0
  432. /package/contracts/{types → type}/NftId.sol +0 -0
  433. /package/contracts/{types → type}/Referral.sol +0 -0
  434. /package/contracts/{types → type}/RiskId.sol +0 -0
  435. /package/contracts/{types → type}/Seconds.sol +0 -0
  436. /package/contracts/{types → type}/UFixed.sol +0 -0
  437. /package/contracts/{types → type}/Version.sol +0 -0
@@ -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
- InstanceAccessManager accessManager = instance.getInstanceAccessManager();
91
- bool hasRole = accessManager.hasRole(
92
- requiredRole,
93
- owner);
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 = instance.getInstanceAccessManager();
130
- if (accessManager.isTargetLocked(info.objectAddress)) {
131
- revert IAccess.ErrorIAccessTargetLocked(info.objectAddress);
132
- }
133
- }
134
- }
@@ -1,350 +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 {IComponents} from "../module/IComponents.sol";
14
- import {IPolicy} from "../module/IPolicy.sol";
15
- import {IRisk} from "../module/IRisk.sol";
16
- import {IBundle} from "../module/IBundle.sol";
17
- import {IProductService} from "./IProductService.sol";
18
- import {ITreasury} from "../module/ITreasury.sol";
19
- import {ISetup} from "../module/ISetup.sol";
20
-
21
- import {TokenHandler} from "../../shared/TokenHandler.sol";
22
-
23
- import {IVersionable} from "../../shared/IVersionable.sol";
24
- import {Versionable} from "../../shared/Versionable.sol";
25
-
26
- import {Seconds} from "../../types/Seconds.sol";
27
- import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
28
- import {UFixed, UFixedLib} from "../../types/UFixed.sol";
29
- import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
30
- import {ObjectType, DISTRIBUTION, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
31
- import {APPLIED, REVOKED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
32
- import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
33
- import {Fee, FeeLib} from "../../types/Fee.sol";
34
- import {ReferralId} from "../../types/Referral.sol";
35
- import {RiskId} from "../../types/RiskId.sol";
36
- import {StateId} from "../../types/StateId.sol";
37
- import {Version, VersionLib} from "../../types/Version.sol";
38
-
39
- import {ComponentService} from "../base/ComponentService.sol";
40
- import {InstanceReader} from "../InstanceReader.sol";
41
- import {IApplicationService} from "./IApplicationService.sol";
42
- import {IBundleService} from "./IBundleService.sol";
43
- import {IDistributionService} from "./IDistributionService.sol";
44
- import {IPoolService} from "./IPoolService.sol";
45
- import {IService} from "../../shared/IService.sol";
46
- import {Service} from "../../shared/Service.sol";
47
-
48
-
49
- contract ApplicationService is
50
- ComponentService,
51
- IApplicationService
52
- {
53
- IDistributionService internal _distributionService;
54
-
55
- function _initialize(
56
- address owner,
57
- bytes memory data
58
- )
59
- internal
60
- virtual override
61
- initializer()
62
- {
63
- // TODO check this, might no longer be the way, refactor if necessary
64
- address registryAddress;
65
- address initialOwner;
66
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
67
-
68
- initializeService(registryAddress, owner);
69
- registerInterface(type(IApplicationService).interfaceId);
70
-
71
- _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), getMajorVersion()));
72
- }
73
-
74
-
75
- function getDomain() public pure override(IService, Service) returns(ObjectType) {
76
- return APPLICATION();
77
- }
78
-
79
-
80
- function create(
81
- address applicationOwner,
82
- RiskId riskId,
83
- uint256 sumInsuredAmount,
84
- Seconds lifetime,
85
- NftId bundleNftId,
86
- ReferralId referralId,
87
- bytes memory applicationData
88
- )
89
- external
90
- virtual
91
- returns (NftId applicationNftId)
92
- {
93
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
94
- // TODO: add validations (see create bundle in pool service)
95
-
96
- applicationNftId = getRegistryService().registerPolicy(
97
- IRegistry.ObjectInfo(
98
- zeroNftId(),
99
- productInfo.nftId,
100
- POLICY(),
101
- false, // intercepting property for policies is defined on product
102
- address(0),
103
- applicationOwner,
104
- ""
105
- )
106
- );
107
-
108
- // (uint256 premiumAmount,,,,,) = calculatePremium(
109
- IPolicy.Premium memory premium = calculatePremium(
110
- productInfo.nftId,
111
- riskId,
112
- sumInsuredAmount,
113
- lifetime,
114
- applicationData,
115
- bundleNftId,
116
- referralId
117
- );
118
-
119
- IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
120
- productInfo.nftId,
121
- bundleNftId,
122
- referralId,
123
- riskId,
124
- sumInsuredAmount,
125
- premium.premiumAmount,
126
- 0,
127
- lifetime,
128
- applicationData,
129
- "",
130
- 0,
131
- 0,
132
- 0,
133
- zeroTimestamp(),
134
- zeroTimestamp(),
135
- zeroTimestamp()
136
- );
137
-
138
- instance.createApplication(applicationNftId, policyInfo);
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
- bytes memory componentData = instanceReader.getComponentInfo(poolNftId).data;
258
- uint256 t = abi.decode(componentData, (IComponents.PoolInfo)).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
- bytes memory componentData = instanceReader.getComponentInfo(poolNftId).data;
311
- UFixed poolFractionalFee = abi.decode(componentData, (IComponents.PoolInfo)).poolFee.fractionalFee;
312
- uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * poolFractionalFee).toInt();
313
- premium.poolFeeVarAmount = t;
314
- premium.fullPremiumAmount += t;
315
- }
316
- {
317
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
318
- if(bundleInfo.poolNftId != poolNftId) {
319
- revert IApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
320
- }
321
- uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * bundleInfo.fee.fractionalFee).toInt();
322
- premium.bundleFeeVarAmount = t;
323
- premium.fullPremiumAmount += t;
324
- }
325
- {
326
- premium = _distributionService.calculateFeeAmount(
327
- product.getDistributionNftId(),
328
- referralId,
329
- premium
330
- );
331
- }
332
- }
333
-
334
- return premium;
335
- }
336
-
337
-
338
- function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
339
- IRegistry.ObjectInfo memory productInfo;
340
- (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
341
- product = Product(productInfo.objectAddress);
342
- }
343
-
344
- function _getAndVerifyProduct(NftId productNftId) internal view returns (Product product) {
345
- IRegistry registry = getRegistry();
346
- IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productNftId);
347
- require(productInfo.objectType == PRODUCT(), "OBJECT_TYPE_INVALID");
348
- product = Product(productInfo.objectAddress);
349
- }
350
- }