@etherisc/gif-next 0.0.2-bfb44e0-483 → 0.0.2-c0b400a-177

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 (344) hide show
  1. package/README.md +8 -8
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +80 -145
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +125 -239
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +77 -92
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +102 -183
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +261 -201
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +81 -164
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +278 -288
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +85 -218
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +496 -536
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -212
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +567 -621
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +448 -121
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +120 -227
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +170 -397
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +207 -116
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +18 -220
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +54 -71
  50. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  53. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  58. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +182 -331
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +141 -366
  64. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +182 -107
  66. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  68. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  70. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +824 -268
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +312 -109
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +124 -206
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +89 -257
  78. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +514 -157
  82. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +45 -289
  84. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +69 -153
  86. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +12 -177
  88. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +85 -442
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +188 -141
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +116 -249
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +187 -104
  96. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +42 -272
  98. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +179 -104
  100. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  101. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  102. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +71 -180
  106. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  107. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  108. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
  110. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  112. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +90 -264
  114. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +182 -113
  116. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +34 -67
  120. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  121. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  122. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  123. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -30
  125. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -30
  128. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  129. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -21
  130. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IService.sol/IService.json +12 -177
  132. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
  134. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +10 -62
  136. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  137. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -23
  138. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  139. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +171 -88
  140. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +11 -74
  142. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  143. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -23
  144. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  145. package/artifacts/contracts/shared/Service.sol/Service.json +13 -215
  146. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  147. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  148. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  149. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  150. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -150
  152. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  154. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +11 -74
  156. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  158. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestService.sol/TestService.json +31 -269
  160. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  163. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +6 -188
  165. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  166. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  167. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  169. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  171. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  172. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  174. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/Fee.sol/FeeLib.json +2 -2
  176. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  177. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  178. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  180. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  181. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  182. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  185. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  187. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  189. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  191. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  193. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  194. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  195. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  197. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  199. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  201. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  203. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  205. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  207. package/contracts/components/Component.sol +96 -81
  208. package/contracts/components/Distribution.sol +29 -47
  209. package/contracts/components/IComponent.sol +40 -16
  210. package/contracts/components/IDistributionComponent.sol +1 -30
  211. package/contracts/components/IPoolComponent.sol +73 -47
  212. package/contracts/components/IProductComponent.sol +3 -2
  213. package/contracts/components/Pool.sol +171 -126
  214. package/contracts/components/Product.sol +38 -23
  215. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  216. package/contracts/instance/BundleManager.sol +7 -5
  217. package/contracts/instance/Cloneable.sol +7 -2
  218. package/contracts/instance/IInstance.sol +23 -11
  219. package/contracts/instance/IInstanceService.sol +18 -5
  220. package/contracts/instance/Instance.sol +62 -16
  221. package/contracts/instance/InstanceAccessManager.sol +382 -157
  222. package/contracts/instance/InstanceReader.sol +7 -10
  223. package/contracts/instance/InstanceService.sol +222 -160
  224. package/contracts/instance/InstanceServiceManager.sol +1 -1
  225. package/contracts/instance/ObjectManager.sol +6 -8
  226. package/contracts/instance/base/ComponentService.sol +5 -5
  227. package/contracts/instance/base/KeyValueStore.sol +5 -2
  228. package/contracts/instance/base/Lifecycle.sol +11 -2
  229. package/contracts/instance/module/IAccess.sol +20 -13
  230. package/contracts/instance/module/IBundle.sol +2 -1
  231. package/contracts/instance/module/IComponents.sol +35 -0
  232. package/contracts/instance/module/IDistribution.sol +2 -0
  233. package/contracts/instance/module/IPolicy.sol +30 -3
  234. package/contracts/instance/module/ISetup.sol +7 -21
  235. package/contracts/instance/service/ApplicationService.sol +139 -57
  236. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  237. package/contracts/instance/service/BundleService.sol +76 -38
  238. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  239. package/contracts/instance/service/ClaimService.sol +151 -0
  240. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  241. package/contracts/instance/service/DistributionService.sol +224 -31
  242. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  243. package/contracts/instance/service/IApplicationService.sol +9 -9
  244. package/contracts/instance/service/IBundleService.sol +19 -11
  245. package/contracts/instance/service/IClaimService.sol +61 -0
  246. package/contracts/instance/service/IDistributionService.sol +36 -3
  247. package/contracts/instance/service/IPolicyService.sol +18 -34
  248. package/contracts/instance/service/IPoolService.sol +17 -2
  249. package/contracts/instance/service/PolicyService.sol +74 -195
  250. package/contracts/instance/service/PolicyServiceManager.sol +2 -2
  251. package/contracts/instance/service/PoolService.sol +128 -17
  252. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  253. package/contracts/instance/service/ProductService.sol +10 -2
  254. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  255. package/contracts/registry/ChainNft.sol +8 -0
  256. package/contracts/registry/IRegistry.sol +2 -0
  257. package/contracts/registry/IRegistryService.sol +10 -8
  258. package/contracts/registry/ITransferInterceptor.sol +1 -0
  259. package/contracts/registry/Registry.sol +26 -21
  260. package/contracts/registry/RegistryService.sol +62 -40
  261. package/contracts/registry/RegistryServiceManager.sol +13 -13
  262. package/contracts/registry/ReleaseManager.sol +18 -28
  263. package/contracts/registry/TokenRegistry.sol +13 -10
  264. package/contracts/shared/ERC165.sol +2 -1
  265. package/contracts/shared/INftOwnable.sol +4 -9
  266. package/contracts/shared/IRegistryLinked.sol +0 -3
  267. package/contracts/shared/IService.sol +2 -0
  268. package/contracts/shared/IVersionable.sol +4 -47
  269. package/contracts/shared/NftOwnable.sol +10 -80
  270. package/contracts/shared/ProxyManager.sol +98 -24
  271. package/contracts/shared/Registerable.sol +3 -10
  272. package/contracts/shared/RegistryLinked.sol +10 -26
  273. package/contracts/shared/Service.sol +10 -12
  274. package/contracts/shared/TokenHandler.sol +11 -5
  275. package/contracts/shared/Versionable.sol +1 -90
  276. package/contracts/types/Blocknumber.sol +1 -0
  277. package/contracts/types/ClaimId.sol +52 -0
  278. package/contracts/types/Fee.sol +1 -0
  279. package/contracts/types/NftId.sol +8 -0
  280. package/contracts/types/ObjectType.sol +5 -4
  281. package/contracts/types/PayoutId.sol +54 -0
  282. package/contracts/types/Referral.sol +4 -0
  283. package/contracts/types/RoleId.sol +16 -9
  284. package/contracts/types/Seconds.sol +54 -0
  285. package/contracts/types/StateId.sol +1 -0
  286. package/contracts/types/Timestamp.sol +13 -13
  287. package/contracts/types/UFixed.sol +1 -0
  288. package/contracts/types/Version.sol +1 -0
  289. package/package.json +1 -1
  290. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  291. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  292. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  293. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  294. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  295. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  296. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  297. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  298. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  299. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  300. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  301. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  302. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  303. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  304. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  305. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  306. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  307. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  308. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  309. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  310. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  312. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  313. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  314. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  315. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  316. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  317. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  318. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  319. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  320. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  321. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  322. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  323. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  324. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  325. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  326. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  328. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  330. package/contracts/experiment/cloning/Cloner.sol +0 -47
  331. package/contracts/experiment/errors/Require.sol +0 -38
  332. package/contracts/experiment/errors/Revert.sol +0 -44
  333. package/contracts/experiment/inheritance/A.sol +0 -53
  334. package/contracts/experiment/inheritance/B.sol +0 -28
  335. package/contracts/experiment/inheritance/C.sol +0 -34
  336. package/contracts/experiment/inheritance/IA.sol +0 -13
  337. package/contracts/experiment/inheritance/IB.sol +0 -10
  338. package/contracts/experiment/inheritance/IC.sol +0 -12
  339. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  340. package/contracts/experiment/statemachine/ISM.sol +0 -25
  341. package/contracts/experiment/statemachine/SM.sol +0 -57
  342. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  343. package/contracts/experiment/types/TypeA.sol +0 -47
  344. package/contracts/experiment/types/TypeB.sol +0 -29
@@ -10,6 +10,7 @@ import {Product} from "../../components/Product.sol";
10
10
  import {IPoolComponent} from "../../components/IPoolComponent.sol";
11
11
  import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
12
12
  import {IInstance} from "../IInstance.sol";
13
+ import {IComponents} from "../module/IComponents.sol";
13
14
  import {IPolicy} from "../module/IPolicy.sol";
14
15
  import {IRisk} from "../module/IRisk.sol";
15
16
  import {IBundle} from "../module/IBundle.sol";
@@ -22,11 +23,12 @@ import {TokenHandler} from "../../shared/TokenHandler.sol";
22
23
  import {IVersionable} from "../../shared/IVersionable.sol";
23
24
  import {Versionable} from "../../shared/Versionable.sol";
24
25
 
26
+ import {Seconds} from "../../types/Seconds.sol";
25
27
  import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
26
28
  import {UFixed, UFixedLib} from "../../types/UFixed.sol";
27
29
  import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
28
- import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
29
- import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
30
+ import {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";
30
32
  import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
31
33
  import {Fee, FeeLib} from "../../types/Fee.sol";
32
34
  import {ReferralId} from "../../types/Referral.sol";
@@ -38,6 +40,7 @@ import {ComponentService} from "../base/ComponentService.sol";
38
40
  import {InstanceReader} from "../InstanceReader.sol";
39
41
  import {IApplicationService} from "./IApplicationService.sol";
40
42
  import {IBundleService} from "./IBundleService.sol";
43
+ import {IDistributionService} from "./IDistributionService.sol";
41
44
  import {IPoolService} from "./IPoolService.sol";
42
45
  import {IService} from "../../shared/IService.sol";
43
46
  import {Service} from "../../shared/Service.sol";
@@ -47,14 +50,14 @@ contract ApplicationService is
47
50
  ComponentService,
48
51
  IApplicationService
49
52
  {
53
+ IDistributionService internal _distributionService;
50
54
 
51
-
52
- function initialize(
55
+ function _initialize(
53
56
  address owner,
54
57
  bytes memory data
55
58
  )
56
- public
57
- virtual
59
+ internal
60
+ virtual override
58
61
  initializer()
59
62
  {
60
63
  // TODO check this, might no longer be the way, refactor if necessary
@@ -64,20 +67,27 @@ contract ApplicationService is
64
67
 
65
68
  initializeService(registryAddress, owner);
66
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();
67
77
  }
68
78
 
69
79
 
70
80
  function create(
71
81
  address applicationOwner,
72
82
  RiskId riskId,
83
+ uint256 sumInsuredAmount,
84
+ Seconds lifetime,
73
85
  NftId bundleNftId,
74
86
  ReferralId referralId,
75
- uint256 sumInsuredAmount,
76
- uint256 lifetime,
77
87
  bytes memory applicationData
78
88
  )
79
89
  external
80
- virtual override
90
+ virtual
81
91
  returns (NftId applicationNftId)
82
92
  {
83
93
  (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
@@ -95,7 +105,9 @@ contract ApplicationService is
95
105
  )
96
106
  );
97
107
 
98
- (uint256 premiumAmount,,,,) = calculatePremium(
108
+ // (uint256 premiumAmount,,,,,) = calculatePremium(
109
+ IPolicy.Premium memory premium = calculatePremium(
110
+ productInfo.nftId,
99
111
  riskId,
100
112
  sumInsuredAmount,
101
113
  lifetime,
@@ -110,7 +122,7 @@ contract ApplicationService is
110
122
  referralId,
111
123
  riskId,
112
124
  sumInsuredAmount,
113
- premiumAmount,
125
+ premium.premiumAmount,
114
126
  0,
115
127
  lifetime,
116
128
  applicationData,
@@ -123,8 +135,7 @@ contract ApplicationService is
123
135
  zeroTimestamp()
124
136
  );
125
137
 
126
- instance.createPolicy(applicationNftId, policyInfo);
127
- instance.updatePolicyState(applicationNftId, APPLIED());
138
+ instance.createApplication(applicationNftId, policyInfo);
128
139
 
129
140
  // TODO: add logging
130
141
  }
@@ -142,7 +153,7 @@ contract ApplicationService is
142
153
  }
143
154
 
144
155
 
145
- function ajust(
156
+ function adjust(
146
157
  NftId applicationNftId,
147
158
  RiskId riskId,
148
159
  NftId bundleNftId,
@@ -157,18 +168,20 @@ contract ApplicationService is
157
168
 
158
169
  }
159
170
 
160
- function revoke(NftId policyNftId)
171
+ function revoke(NftId applicationNftId)
161
172
  external
162
173
  virtual override
163
174
  {
164
-
175
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
176
+ instance.updateApplicationState(applicationNftId, REVOKED());
165
177
  }
166
178
 
167
-
179
+ // TODO: maybe move this to a pricing service later
168
180
  function calculatePremium(
181
+ NftId productNftId,
169
182
  RiskId riskId,
170
183
  uint256 sumInsuredAmount,
171
- uint256 lifetime,
184
+ Seconds lifetime,
172
185
  bytes memory applicationData,
173
186
  NftId bundleNftId,
174
187
  ReferralId referralId
@@ -177,47 +190,36 @@ contract ApplicationService is
177
190
  view
178
191
  virtual override
179
192
  returns (
180
- uint256 premiumAmount,
181
- uint256 distributionFeeAmount,
182
- uint256 productFeeAmount,
183
- uint256 poolFeeAmount,
184
- uint256 bundleFeeAmount
193
+ IPolicy.Premium memory premium
185
194
  )
186
195
  {
187
- Product product = _getAndVerifyInstanceAndProduct();
188
- uint256 netPremiumAmount = product.calculateNetPremium(
196
+ uint256 netPremiumAmount = _getAndVerifyProduct(productNftId).calculateNetPremium(
189
197
  sumInsuredAmount,
190
198
  riskId,
191
199
  lifetime,
192
200
  applicationData
193
201
  );
194
202
 
195
- (
196
- productFeeAmount,
197
- poolFeeAmount,
198
- bundleFeeAmount,
199
- distributionFeeAmount
200
- ) = _calculateFeeAmounts(
203
+ premium = _getFixedFeeAmounts(
201
204
  netPremiumAmount,
202
- product,
205
+ _getAndVerifyProduct(productNftId),
203
206
  bundleNftId,
204
207
  referralId
205
208
  );
206
209
 
207
- premiumAmount = netPremiumAmount + productFeeAmount;
208
- premiumAmount += poolFeeAmount + bundleFeeAmount;
209
- premiumAmount += distributionFeeAmount;
210
- }
211
-
212
-
213
- function getDomain() public pure override(IService, Service) returns(ObjectType) {
214
- return APPLICATION();
210
+ (
211
+ premium
212
+ ) = _calculateVariableFeeAmounts(
213
+ premium,
214
+ _getAndVerifyProduct(productNftId),
215
+ bundleNftId,
216
+ referralId
217
+ );
215
218
  }
216
219
 
217
220
 
218
221
  // internal functions
219
-
220
- function _calculateFeeAmounts(
222
+ function _getFixedFeeAmounts(
221
223
  uint256 netPremiumAmount,
222
224
  Product product,
223
225
  NftId bundleNftId,
@@ -226,10 +228,7 @@ contract ApplicationService is
226
228
  internal
227
229
  view
228
230
  returns (
229
- uint256 productFeeAmount,
230
- uint256 poolFeeAmount,
231
- uint256 bundleFeeAmount,
232
- uint256 distributionFeeAmount
231
+ IPolicy.Premium memory premium
233
232
  )
234
233
  {
235
234
  InstanceReader instanceReader;
@@ -239,24 +238,100 @@ contract ApplicationService is
239
238
  }
240
239
 
241
240
  NftId poolNftId = product.getPoolNftId();
242
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
243
- require(bundleInfo.poolNftId == poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
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
244
248
 
245
249
  {
246
- ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
247
- (productFeeAmount,) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
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
+ }
248
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;
249
294
  {
250
- ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
251
- (poolFeeAmount,) = FeeLib.calculateFee(poolSetupInfo.poolFee, netPremiumAmount);
295
+ IInstance instance = product.getInstance();
296
+ instanceReader = instance.getInstanceReader();
252
297
  }
298
+
299
+ NftId poolNftId = product.getPoolNftId();
300
+ uint256 netPremiumAmount = premium.netPremiumAmount;
301
+
253
302
  {
254
- NftId distributionNftId = product.getDistributionNftId();
255
- ISetup.DistributionSetupInfo memory distributionSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
256
- (distributionFeeAmount,) = FeeLib.calculateFee(distributionSetupInfo.distributionFee, netPremiumAmount);
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
+ }
257
332
  }
258
-
259
- (bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
333
+
334
+ return premium;
260
335
  }
261
336
 
262
337
 
@@ -265,4 +340,11 @@ contract ApplicationService is
265
340
  (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
266
341
  product = Product(productInfo.objectAddress);
267
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
+ }
268
350
  }
@@ -0,0 +1,35 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {ApplicationService} from "./ApplicationService.sol";
7
+
8
+ contract ApplicationServiceManager is ProxyManager {
9
+
10
+ ApplicationService private _applicationService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address registryAddress
15
+ )
16
+ ProxyManager(registryAddress)
17
+ {
18
+ ApplicationService svc = new ApplicationService();
19
+ bytes memory data = abi.encode(registryAddress, address(this));
20
+ IVersionable versionable = deploy(
21
+ address(svc),
22
+ data);
23
+
24
+ _applicationService = ApplicationService(address(versionable));
25
+ }
26
+
27
+ //--- view functions ----------------------------------------------------//
28
+ function getApplicationService()
29
+ external
30
+ view
31
+ returns (ApplicationService)
32
+ {
33
+ return _applicationService;
34
+ }
35
+ }
@@ -1,25 +1,27 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {Pool} from "../../components/Pool.sol";
4
+ import {IBundle} from "../../instance/module/IBundle.sol";
5
+ import {IComponents} from "../module/IComponents.sol";
5
6
  import {IRegistry} from "../../registry/IRegistry.sol";
6
7
  import {IInstance} from "../../instance/IInstance.sol";
7
- import {IBundle} from "../../instance/module/IBundle.sol";
8
8
  import {TokenHandler} from "../../instance/module/ITreasury.sol";
9
9
  import {ISetup} from "../module/ISetup.sol";
10
10
  import {IPolicy} from "../module/IPolicy.sol";
11
11
 
12
12
  import {IVersionable} from "../../shared/IVersionable.sol";
13
- import {Versionable} from "../../shared/Versionable.sol";
14
13
  import {INftOwnable} from "../../shared/INftOwnable.sol";
15
-
16
14
  import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
17
15
  import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
18
16
  import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
17
+ import {Pool} from "../../components/Pool.sol";
18
+
19
19
  import {Fee, FeeLib} from "../../types/Fee.sol";
20
- import {Version, VersionLib} from "../../types/Version.sol";
21
- import {KEEP_STATE, StateId} from "../../types/StateId.sol";
20
+ import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../../types/StateId.sol";
21
+ import {Seconds} from "../../types/Seconds.sol";
22
22
  import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
23
+ import {Version, VersionLib} from "../../types/Version.sol";
24
+ import {Versionable} from "../../shared/Versionable.sol";
23
25
 
24
26
  import {IService} from "../../shared/IService.sol";
25
27
  import {Service} from "../../shared/Service.sol";
@@ -63,11 +65,11 @@ contract BundleService is
63
65
  return BUNDLE();
64
66
  }
65
67
 
66
- function createBundle(
68
+ function create(
67
69
  address owner,
68
70
  Fee memory fee,
69
71
  uint256 stakingAmount,
70
- uint256 lifetime,
72
+ Seconds lifetime,
71
73
  bytes calldata filter
72
74
  )
73
75
  external
@@ -118,7 +120,7 @@ contract BundleService is
118
120
  // TODO add logging
119
121
  }
120
122
 
121
- function setBundleFee(
123
+ function setFee(
122
124
  NftId bundleNftId,
123
125
  Fee memory fee
124
126
  )
@@ -138,30 +140,6 @@ contract BundleService is
138
140
  instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
139
141
  }
140
142
 
141
- function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state)
142
- external
143
- onlyService
144
- {
145
- IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
146
- IInstance instance = IInstance(instanceInfo.objectAddress);
147
- instance.updateBundle(bundleNftId, bundleInfo, state);
148
- }
149
-
150
- function lockBundle(NftId bundleNftId)
151
- external
152
- {
153
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
154
- BundleManager bundleManager = instance.getBundleManager();
155
- bundleManager.lock(bundleNftId);
156
- }
157
-
158
- function unlockBundle(NftId bundleNftId)
159
- external
160
- {
161
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
162
- BundleManager bundleManager = instance.getBundleManager();
163
- bundleManager.unlock(bundleNftId);
164
- }
165
143
 
166
144
  function lockCollateral(
167
145
  IInstance instance,
@@ -190,6 +168,64 @@ contract BundleService is
190
168
  linkPolicy(instance, policyNftId);
191
169
  }
192
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
+
193
229
  function increaseBalance(IInstance instance,
194
230
  NftId bundleNftId,
195
231
  uint256 amount
@@ -234,7 +270,7 @@ contract BundleService is
234
270
 
235
271
  // ensure policy has not yet been activated
236
272
  if (policyInfo.activatedAt.gtz()) {
237
- revert BundleManager.ErrorBundleManagerErrorPolicyAlreadyActivated(policyNftId);
273
+ revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
238
274
  }
239
275
 
240
276
  BundleManager bundleManager = instance.getBundleManager();
@@ -277,18 +313,20 @@ contract BundleService is
277
313
  {
278
314
  // process token transfer(s)
279
315
  if(stakingAmount > 0) {
280
- ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
281
- TokenHandler tokenHandler = poolInfo.tokenHandler;
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;
282
321
  address bundleOwner = getRegistry().ownerOf(bundleNftId);
283
322
  Fee memory stakingFee = poolInfo.stakingFee;
284
323
 
285
324
  tokenHandler.transfer(
286
325
  bundleOwner,
287
- poolInfo.wallet,
326
+ componentInfo.wallet,
288
327
  stakingAmount
289
328
  );
290
329
 
291
-
292
330
  if (! FeeLib.feeIsZero(stakingFee)) {
293
331
  (uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
294
332
  // TODO: track staking fees in pool's state (issue #177)
@@ -16,7 +16,7 @@ contract BundleServiceManager is ProxyManager {
16
16
  constructor(
17
17
  address registryAddress
18
18
  )
19
- ProxyManager()
19
+ ProxyManager(registryAddress)
20
20
  {
21
21
  BundleService bundleSrv = new BundleService();
22
22
  bytes memory data = abi.encode(registryAddress, address(this));