@etherisc/gif-next 0.0.2-d5b7b78-706 → 0.0.2-d5fac82-078

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 (453) hide show
  1. package/README.md +8 -84
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +90 -14
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1575 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +851 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +145 -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 +104 -55
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +420 -2725
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +746 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +188 -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 +179 -214
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +121 -95
  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 +1 -130
  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 +1307 -0
  54. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +767 -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 +162 -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 +91 -21
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1641 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +779 -0
  68. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +937 -0
  70. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +719 -0
  72. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1405 -0
  74. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +819 -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 +152 -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 +1300 -0
  90. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +811 -0
  92. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1023 -0
  94. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +759 -0
  96. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  97. package/artifacts/contracts/{components → product}/Product.sol/Product.json +82 -22
  98. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.json +883 -0
  100. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +711 -0
  102. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  104. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +110 -30
  105. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +165 -84
  107. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  108. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.json +133 -45
  110. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  111. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +305 -0
  112. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +209 -104
  114. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +103 -55
  116. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +542 -86
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +20 -35
  120. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  121. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  122. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  123. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  124. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  125. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  126. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  127. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1747 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1765 -0
  130. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  131. package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
  132. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  133. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +67 -7
  134. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +133 -35
  136. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  138. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  139. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  140. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1594 -0
  141. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  142. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +138 -7
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  145. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  146. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  149. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  150. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  151. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  152. package/artifacts/contracts/shared/IService.sol/IService.json +85 -27
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  154. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  155. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +23 -43
  156. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  157. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
  158. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  159. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +81 -33
  160. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  161. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +27 -21
  162. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  163. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  164. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  165. package/artifacts/contracts/shared/Service.sol/Service.json +110 -28
  166. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  167. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  168. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  169. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  170. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  171. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  172. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +523 -0
  173. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  174. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +786 -0
  175. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  176. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +699 -0
  177. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  178. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  179. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  180. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  181. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  182. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  183. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  185. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  186. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  187. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  188. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  189. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  190. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  191. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  192. package/artifacts/contracts/{types → type}/NftId.sol/NftIdLib.json +5 -5
  193. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  194. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  195. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  196. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  197. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  198. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  199. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  200. package/artifacts/contracts/{types → type}/Referral.sol/ReferralLib.json +5 -5
  201. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  202. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  203. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  204. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  205. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  206. package/artifacts/contracts/{types → type}/Seconds.sol/SecondsLib.json +3 -3
  207. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  208. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  209. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  210. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +20 -7
  211. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  212. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  213. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  214. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  215. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  216. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  217. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  218. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  219. package/contracts/{components → distribution}/Distribution.sol +21 -16
  220. package/contracts/distribution/DistributionService.sol +351 -0
  221. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  222. package/contracts/{components → distribution}/IDistributionComponent.sol +7 -7
  223. package/contracts/{instance/service → distribution}/IDistributionService.sol +19 -30
  224. package/contracts/instance/BundleManager.sol +8 -9
  225. package/contracts/instance/IInstance.sol +45 -66
  226. package/contracts/instance/IInstanceService.sol +21 -20
  227. package/contracts/instance/Instance.sol +121 -218
  228. package/contracts/instance/InstanceAdmin.sol +354 -0
  229. package/contracts/instance/InstanceAuthorizationsLib.sol +320 -0
  230. package/contracts/instance/InstanceReader.sol +96 -18
  231. package/contracts/instance/InstanceService.sol +120 -317
  232. package/contracts/instance/InstanceServiceManager.sol +11 -21
  233. package/contracts/instance/InstanceStore.sol +211 -0
  234. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +1 -1
  235. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  236. package/contracts/instance/base/ILifecycle.sol +3 -3
  237. package/contracts/instance/base/KeyValueStore.sol +39 -45
  238. package/contracts/instance/base/Lifecycle.sol +17 -5
  239. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +7 -7
  240. package/contracts/instance/module/IAccess.sol +3 -13
  241. package/contracts/instance/module/IBundle.sol +10 -8
  242. package/contracts/instance/module/IComponents.sol +11 -5
  243. package/contracts/instance/module/IDistribution.sol +7 -6
  244. package/contracts/instance/module/IPolicy.sol +22 -16
  245. package/contracts/instance/module/IRisk.sol +1 -1
  246. package/contracts/instance/module/ISetup.sol +4 -4
  247. package/contracts/instance/module/ITreasury.sol +2 -2
  248. package/contracts/pool/BundleService.sol +384 -0
  249. package/contracts/pool/BundleServiceManager.sol +42 -0
  250. package/contracts/pool/IBundleService.sol +118 -0
  251. package/contracts/{components → pool}/IPoolComponent.sol +14 -13
  252. package/contracts/pool/IPoolService.sol +114 -0
  253. package/contracts/{components → pool}/Pool.sol +25 -22
  254. package/contracts/pool/PoolService.sol +404 -0
  255. package/contracts/pool/PoolServiceManager.sol +42 -0
  256. package/contracts/product/ApplicationService.sol +187 -0
  257. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  258. package/contracts/product/ClaimService.sol +443 -0
  259. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  260. package/contracts/{instance/service → product}/IApplicationService.sol +14 -34
  261. package/contracts/product/IClaimService.sol +93 -0
  262. package/contracts/{instance/service → product}/IPolicyService.sol +34 -26
  263. package/contracts/product/IPricingService.sol +37 -0
  264. package/contracts/{components → product}/IProductComponent.sol +11 -10
  265. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  266. package/contracts/product/PolicyService.sol +378 -0
  267. package/contracts/product/PolicyServiceManager.sol +42 -0
  268. package/contracts/product/PricingService.sol +276 -0
  269. package/contracts/product/PricingServiceManager.sol +42 -0
  270. package/contracts/{components → product}/Product.sol +160 -74
  271. package/contracts/product/ProductService.sol +212 -0
  272. package/contracts/product/ProductServiceManager.sol +42 -0
  273. package/contracts/registry/IRegistry.sol +28 -17
  274. package/contracts/registry/IRegistryService.sol +29 -37
  275. package/contracts/registry/Registry.sol +46 -48
  276. package/contracts/registry/RegistryAdmin.sol +143 -0
  277. package/contracts/registry/RegistryService.sol +37 -88
  278. package/contracts/registry/RegistryServiceManager.sol +21 -23
  279. package/contracts/registry/ReleaseManager.sol +318 -177
  280. package/contracts/registry/TokenRegistry.sol +6 -4
  281. package/contracts/shared/AccessManagerCustom.sol +736 -0
  282. package/contracts/shared/AccessManagerExtended.sol +469 -0
  283. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  284. package/contracts/shared/AccessManagerExtendedWithDisable.sol +125 -0
  285. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  286. package/contracts/{components → shared}/Component.sol +31 -11
  287. package/contracts/shared/ComponentService.sol +141 -0
  288. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  289. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +17 -0
  290. package/contracts/{components → shared}/IComponent.sol +22 -6
  291. package/contracts/shared/INftOwnable.sol +1 -1
  292. package/contracts/shared/IPolicyHolder.sol +24 -10
  293. package/contracts/shared/IRegistryLinked.sol +0 -1
  294. package/contracts/shared/IService.sol +6 -6
  295. package/contracts/shared/IVersionable.sol +1 -1
  296. package/contracts/shared/NftOwnable.sol +13 -16
  297. package/contracts/shared/PolicyHolder.sol +31 -18
  298. package/contracts/shared/ProxyManager.sol +34 -3
  299. package/contracts/shared/Registerable.sol +12 -11
  300. package/contracts/shared/RegistryLinked.sol +0 -5
  301. package/contracts/shared/Service.sol +23 -9
  302. package/contracts/shared/TokenHandler.sol +4 -2
  303. package/contracts/shared/Versionable.sol +1 -1
  304. package/contracts/staking/IStakingService.sol +102 -0
  305. package/contracts/staking/StakingService.sol +169 -0
  306. package/contracts/staking/StakingServiceManager.sol +40 -0
  307. package/contracts/type/Amount.sol +109 -0
  308. package/contracts/{types → type}/ClaimId.sol +25 -2
  309. package/contracts/{types → type}/Fee.sol +16 -8
  310. package/contracts/{types → type}/NftIdSet.sol +1 -1
  311. package/contracts/{types → type}/ObjectType.sol +10 -5
  312. package/contracts/{types → type}/PayoutId.sol +33 -5
  313. package/contracts/{types → type}/RoleId.sol +50 -8
  314. package/contracts/{types → type}/StateId.sol +6 -2
  315. package/contracts/{types → type}/Timestamp.sol +5 -0
  316. package/package.json +1 -1
  317. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  318. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  319. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  320. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  321. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  322. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  323. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  324. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  325. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  326. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  327. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  328. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1311
  329. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  330. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  331. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  332. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
  333. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  334. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  335. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  336. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
  337. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  338. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  339. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  340. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  341. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  342. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  343. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  344. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1732
  345. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  346. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  347. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  348. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  349. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  350. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  351. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  352. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  353. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -428
  354. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  355. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  356. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
  357. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  358. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  359. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  360. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -824
  361. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  362. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -657
  363. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  364. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  365. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  366. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  367. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  368. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  369. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  370. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  371. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  372. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  373. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  374. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  375. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  376. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  377. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  378. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  379. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  380. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  381. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  382. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  383. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  384. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  385. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  386. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  387. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  388. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  389. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  390. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  391. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  392. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  393. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  394. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  395. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  396. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  397. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  398. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  399. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  400. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  401. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  402. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  403. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  404. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  405. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  406. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  407. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  408. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  409. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  410. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  411. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  412. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  413. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  414. package/contracts/instance/InstanceAccessManager.sol +0 -522
  415. package/contracts/instance/base/ComponentService.sol +0 -134
  416. package/contracts/instance/service/ApplicationService.sol +0 -350
  417. package/contracts/instance/service/BundleService.sol +0 -336
  418. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  419. package/contracts/instance/service/ClaimService.sol +0 -151
  420. package/contracts/instance/service/DistributionService.sol +0 -467
  421. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  422. package/contracts/instance/service/IBundleService.sol +0 -62
  423. package/contracts/instance/service/IClaimService.sol +0 -61
  424. package/contracts/instance/service/IPoolService.sol +0 -35
  425. package/contracts/instance/service/PolicyService.sol +0 -403
  426. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  427. package/contracts/instance/service/PoolService.sol +0 -220
  428. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  429. package/contracts/instance/service/ProductService.sol +0 -241
  430. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  431. package/contracts/registry/RegistryAccessManager.sol +0 -216
  432. package/contracts/shared/ContractDeployerLib.sol +0 -72
  433. package/contracts/test/TestFee.sol +0 -25
  434. package/contracts/test/TestRegisterable.sol +0 -18
  435. package/contracts/test/TestRoleId.sol +0 -14
  436. package/contracts/test/TestService.sol +0 -25
  437. package/contracts/test/TestToken.sol +0 -26
  438. package/contracts/test/TestVersion.sol +0 -44
  439. package/contracts/test/TestVersionable.sol +0 -17
  440. package/contracts/test/Usdc.sol +0 -26
  441. package/contracts/types/ChainId.sol +0 -38
  442. package/contracts/types/NumberId.sol +0 -52
  443. /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
  444. /package/contracts/{types → type}/AddressSet.sol +0 -0
  445. /package/contracts/{types → type}/Blocknumber.sol +0 -0
  446. /package/contracts/{types → type}/DistributorType.sol +0 -0
  447. /package/contracts/{types → type}/Key32.sol +0 -0
  448. /package/contracts/{types → type}/NftId.sol +0 -0
  449. /package/contracts/{types → type}/Referral.sol +0 -0
  450. /package/contracts/{types → type}/RiskId.sol +0 -0
  451. /package/contracts/{types → type}/Seconds.sol +0 -0
  452. /package/contracts/{types → type}/UFixed.sol +0 -0
  453. /package/contracts/{types → type}/Version.sol +0 -0
@@ -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
- }
@@ -1,336 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IBundle} from "../../instance/module/IBundle.sol";
5
- import {IComponents} from "../module/IComponents.sol";
6
- import {IRegistry} from "../../registry/IRegistry.sol";
7
- import {IInstance} from "../../instance/IInstance.sol";
8
- import {TokenHandler} from "../../instance/module/ITreasury.sol";
9
- import {ISetup} from "../module/ISetup.sol";
10
- import {IPolicy} from "../module/IPolicy.sol";
11
-
12
- import {IVersionable} from "../../shared/IVersionable.sol";
13
- import {INftOwnable} from "../../shared/INftOwnable.sol";
14
- import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
15
- import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
16
- import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
17
- import {Pool} from "../../components/Pool.sol";
18
-
19
- import {Fee, FeeLib} from "../../types/Fee.sol";
20
- import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../../types/StateId.sol";
21
- import {Seconds} from "../../types/Seconds.sol";
22
- import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
23
- import {Version, VersionLib} from "../../types/Version.sol";
24
- import {Versionable} from "../../shared/Versionable.sol";
25
-
26
- import {IService} from "../../shared/IService.sol";
27
- import {Service} from "../../shared/Service.sol";
28
- import {BundleManager} from "../BundleManager.sol";
29
- import {ComponentService} from "../base/ComponentService.sol";
30
- import {IBundleService} from "./IBundleService.sol";
31
- import {IRegistryService} from "../../registry/IRegistryService.sol";
32
- import {InstanceService} from "../InstanceService.sol";
33
- import {InstanceReader} from "../InstanceReader.sol";
34
-
35
- string constant BUNDLE_SERVICE_NAME = "BundleService";
36
-
37
- contract BundleService is
38
- ComponentService,
39
- IBundleService
40
- {
41
- using NftIdLib for NftId;
42
-
43
- string public constant NAME = "BundleService";
44
-
45
- address internal _registryAddress;
46
-
47
- function _initialize(
48
- address owner,
49
- bytes memory data
50
- )
51
- internal
52
- initializer
53
- virtual override
54
- {
55
- address registryAddress;
56
- address initialOwner;
57
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
58
- // TODO while PoolService is not deployed in PoolServiceManager constructor
59
- // owner is PoolServiceManager deployer
60
- initializeService(registryAddress, owner);
61
- registerInterface(type(IBundleService).interfaceId);
62
- }
63
-
64
- function getDomain() public pure override(Service, IService) returns(ObjectType) {
65
- return BUNDLE();
66
- }
67
-
68
- function create(
69
- address owner,
70
- Fee memory fee,
71
- uint256 stakingAmount,
72
- Seconds lifetime,
73
- bytes calldata filter
74
- )
75
- external
76
- override
77
- returns(NftId bundleNftId)
78
- {
79
- (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
80
- InstanceReader instanceReader = instance.getInstanceReader();
81
- NftId poolNftId = info.nftId;
82
-
83
- IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
84
- poolNftId,
85
- fee,
86
- filter,
87
- stakingAmount,
88
- 0,
89
- stakingAmount,
90
- lifetime,
91
- zeroTimestamp(),
92
- zeroTimestamp()
93
- );
94
-
95
- // register bundle with registry
96
- bundleNftId = getRegistryService().registerBundle(
97
- IRegistry.ObjectInfo(
98
- zeroNftId(),
99
- poolNftId,
100
- BUNDLE(),
101
- false, // intercepting property for bundles is defined on pool
102
- address(0),
103
- owner,
104
- abi.encode(bundleInfo)
105
- )
106
- );
107
-
108
- // create bundle info in instance
109
- instance.createBundle(bundleNftId, bundleInfo);
110
-
111
- BundleManager bundleManager = instance.getBundleManager();
112
- bundleManager.add(bundleNftId);
113
-
114
- _processStakingByTreasury(
115
- instanceReader,
116
- poolNftId,
117
- bundleNftId,
118
- stakingAmount);
119
-
120
- // TODO add logging
121
- }
122
-
123
- function setFee(
124
- NftId bundleNftId,
125
- Fee memory fee
126
- )
127
- external
128
- override
129
- {
130
- (IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
131
- InstanceReader instanceReader = instance.getInstanceReader();
132
- NftId poolNftId = info.nftId;
133
-
134
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
135
- require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
136
- require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
137
-
138
- bundleInfo.fee = fee;
139
-
140
- instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
141
- }
142
-
143
-
144
- function lockCollateral(
145
- IInstance instance,
146
- NftId policyNftId,
147
- NftId bundleNftId,
148
- uint256 collateralAmount,
149
- uint256 netPremiumAmount
150
- )
151
- external
152
- onlyService
153
- returns (
154
- IBundle.BundleInfo memory bundleInfo
155
- )
156
- {
157
- InstanceReader instanceReader = instance.getInstanceReader();
158
- bundleInfo = instanceReader.getBundleInfo(bundleNftId);
159
-
160
- // TODO add validation
161
-
162
- // lock collateral
163
- bundleInfo.lockedAmount += collateralAmount;
164
- bundleInfo.balanceAmount += netPremiumAmount;
165
-
166
- instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
167
-
168
- linkPolicy(instance, policyNftId);
169
- }
170
-
171
-
172
- function lock(NftId bundleNftId)
173
- external
174
- virtual
175
- {
176
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
177
-
178
- // udpate bundle state
179
- instance.updateBundleState(bundleNftId, PAUSED());
180
-
181
- // update set of active bundles
182
- BundleManager bundleManager = instance.getBundleManager();
183
- bundleManager.lock(bundleNftId);
184
-
185
- emit LogBundleServiceBundleLocked(bundleNftId);
186
- }
187
-
188
-
189
- function unlock(NftId bundleNftId)
190
- external
191
- virtual
192
- {
193
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
194
-
195
- // udpate bundle state
196
- instance.updateBundleState(bundleNftId, ACTIVE());
197
-
198
- // update set of active bundles
199
- BundleManager bundleManager = instance.getBundleManager();
200
- bundleManager.unlock(bundleNftId);
201
-
202
- emit LogBundleServiceBundleActivated(bundleNftId);
203
- }
204
-
205
-
206
- function close(NftId bundleNftId)
207
- external
208
- virtual
209
- {
210
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
211
-
212
- // udpate bundle state
213
- instance.updateBundleState(bundleNftId, CLOSED());
214
-
215
- // ensure no open policies attached to bundle
216
- BundleManager bundleManager = instance.getBundleManager();
217
- uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
218
- if(openPolicies > 0) {
219
- revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
220
- }
221
-
222
- // update set of active bundles
223
- bundleManager.lock(bundleNftId);
224
-
225
- emit LogBundleServiceBundleClosed(bundleNftId);
226
- }
227
-
228
-
229
- function increaseBalance(IInstance instance,
230
- NftId bundleNftId,
231
- uint256 amount
232
- )
233
- external
234
- onlyService
235
- {
236
- InstanceReader instanceReader = instance.getInstanceReader();
237
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
238
-
239
- bundleInfo.balanceAmount += amount;
240
-
241
- instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
242
- }
243
-
244
- function closePolicy(IInstance instance,
245
- NftId policyNftId,
246
- NftId bundleNftId,
247
- uint256 collateralAmount
248
- )
249
- external
250
- onlyService
251
- {
252
- InstanceReader instanceReader = instance.getInstanceReader();
253
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
254
-
255
- // lock collateral
256
- bundleInfo.lockedAmount -= collateralAmount;
257
-
258
- instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
259
-
260
- unlinkPolicy(instance, policyNftId);
261
- }
262
-
263
- /// @dev links policy to bundle
264
- function linkPolicy(IInstance instance, NftId policyNftId)
265
- internal
266
- onlyService
267
- {
268
- InstanceReader instanceReader = instance.getInstanceReader();
269
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
270
-
271
- // ensure policy has not yet been activated
272
- if (policyInfo.activatedAt.gtz()) {
273
- revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
274
- }
275
-
276
- BundleManager bundleManager = instance.getBundleManager();
277
- bundleManager.linkPolicy(policyNftId);
278
- }
279
-
280
- /// @dev unlinks policy from bundle
281
- function unlinkPolicy(IInstance instance, NftId policyNftId)
282
- internal
283
- onlyService
284
- {
285
- InstanceReader instanceReader = instance.getInstanceReader();
286
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
287
-
288
- // ensure policy has no open claims
289
- if (policyInfo.openClaimsCount > 0) {
290
- revert BundleManager.ErrorBundleManagerPolicyWithOpenClaims(
291
- policyNftId,
292
- policyInfo.openClaimsCount);
293
- }
294
-
295
- // ensure policy is closeable
296
- if ( TimestampLib.blockTimestamp() < policyInfo.expiredAt
297
- && policyInfo.payoutAmount < policyInfo.sumInsuredAmount)
298
- {
299
- revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
300
- }
301
-
302
- BundleManager bundleManager = instance.getBundleManager();
303
- bundleManager.unlinkPolicy(policyNftId);
304
- }
305
-
306
- function _processStakingByTreasury(
307
- InstanceReader instanceReader,
308
- NftId poolNftId,
309
- NftId bundleNftId,
310
- uint256 stakingAmount
311
- )
312
- internal
313
- {
314
- // process token transfer(s)
315
- if(stakingAmount > 0) {
316
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
317
- IComponents.PoolInfo memory poolInfo = abi.decode(
318
- componentInfo.data, (IComponents.PoolInfo));
319
-
320
- TokenHandler tokenHandler = componentInfo.tokenHandler;
321
- address bundleOwner = getRegistry().ownerOf(bundleNftId);
322
- Fee memory stakingFee = poolInfo.stakingFee;
323
-
324
- tokenHandler.transfer(
325
- bundleOwner,
326
- componentInfo.wallet,
327
- stakingAmount
328
- );
329
-
330
- if (! FeeLib.feeIsZero(stakingFee)) {
331
- (uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
332
- // TODO: track staking fees in pool's state (issue #177)
333
- }
334
- }
335
- }
336
- }