@etherisc/gif-next 0.0.2-dc7e4cb-141 → 0.0.2-de0a1d3-009

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 (268) hide show
  1. package/README.md +58 -11
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.json +405 -0
  5. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  6. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +340 -0
  8. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +131 -0
  10. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +109 -18
  12. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  13. package/artifacts/contracts/components/Pool.sol/Pool.json +194 -3
  14. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  15. package/artifacts/contracts/components/Product.sol/Product.json +160 -21
  16. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  28. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  32. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  34. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  36. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  37. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +709 -678
  38. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +1 -1
  39. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  40. package/artifacts/contracts/instance/Instance.sol/Instance.json +916 -717
  41. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  42. package/artifacts/contracts/instance/{InstanceBase.sol/InstanceBase.json → base/ComponentServiceBase.sol/ComponentServiceBase.json} +102 -28
  43. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  44. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  45. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  46. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
  47. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  48. package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  49. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  50. package/artifacts/contracts/instance/{service → base}/IService.sol/IService.json +58 -17
  51. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  52. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +463 -0
  53. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  54. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -0
  55. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  56. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  57. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
  58. package/artifacts/contracts/instance/{module/compensation/ICompensation.sol/ICompensation.json → base/ModuleBase.sol/ModuleBase.json} +2 -2
  59. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  60. package/artifacts/contracts/instance/{service → base}/ServiceBase.sol/ServiceBase.json +88 -1
  61. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +1 -1
  62. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +1 -1
  63. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +71 -50
  66. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +71 -50
  69. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +22 -93
  71. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +22 -93
  74. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
  76. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/{compensation/ICompensation.sol/ICompensationModule.json → distribution/IDistribution.sol/IDistribution.json} +2 -2
  78. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
  79. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +10 -0
  80. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +61 -38
  83. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +61 -38
  85. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -5
  88. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -5
  90. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +1 -1
  91. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +1 -1
  92. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +104 -1
  93. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +126 -5
  95. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +209 -231
  98. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +2 -2
  100. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +209 -231
  102. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +145 -18
  104. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +507 -0
  106. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +57 -16
  108. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/{ComponentServiceBase.sol/ComponentServiceBase.json → IDistributionService.sol/IDistributionService.json} +91 -25
  110. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  111. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +122 -17
  112. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  113. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +210 -16
  114. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  115. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +171 -12
  116. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  117. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +303 -31
  118. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  124. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +724 -0
  126. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +53 -12
  131. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +4 -0
  132. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +248 -0
  133. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +4 -0
  134. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.json +129 -0
  135. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +87 -0
  138. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +4 -0
  139. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +228 -0
  140. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
  141. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +405 -0
  142. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  143. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  144. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +1 -1
  145. package/artifacts/contracts/test/TestPool.sol/TestPool.json +194 -3
  146. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +209 -27
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +38 -4
  152. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestService.sol/TestService.json +95 -8
  154. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  157. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +95 -8
  159. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  160. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  161. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/Fee.sol/FeeLib.json +50 -11
  165. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  166. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
  167. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  169. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  170. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  171. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  173. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
  174. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
  175. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  177. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  178. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
  179. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  181. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  185. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  187. package/contracts/components/BaseComponent.sol +7 -2
  188. package/contracts/components/Distribution.sol +132 -0
  189. package/contracts/components/IDistributionComponent.sol +47 -0
  190. package/contracts/components/IPoolComponent.sol +14 -0
  191. package/contracts/components/IProductComponent.sol +24 -5
  192. package/contracts/components/Pool.sol +64 -3
  193. package/contracts/components/Product.sol +123 -13
  194. package/contracts/instance/IInstance.sol +14 -14
  195. package/contracts/instance/Instance.sol +20 -12
  196. package/contracts/instance/{service → base}/ComponentServiceBase.sol +1 -0
  197. package/contracts/instance/base/IInstanceBase.sol +22 -0
  198. package/contracts/instance/base/IKeyValueStore.sol +50 -0
  199. package/contracts/instance/base/ILifecycle.sol +30 -0
  200. package/contracts/instance/{InstanceBase.sol → base/InstanceBase.sol} +33 -13
  201. package/contracts/instance/base/KeyValueStore.sol +161 -0
  202. package/contracts/instance/{module/lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +50 -39
  203. package/contracts/instance/base/ModuleBase.sol +57 -0
  204. package/contracts/instance/{service → base}/ServiceBase.sol +0 -2
  205. package/contracts/instance/module/access/Access.sol +6 -6
  206. package/contracts/instance/module/bundle/BundleModule.sol +24 -118
  207. package/contracts/instance/module/bundle/IBundle.sol +9 -9
  208. package/contracts/instance/module/component/ComponentModule.sol +27 -60
  209. package/contracts/instance/module/component/IComponent.sol +5 -30
  210. package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
  211. package/contracts/instance/module/distribution/IDistribution.sol +10 -0
  212. package/contracts/instance/module/policy/IPolicy.sol +12 -9
  213. package/contracts/instance/module/policy/PolicyModule.sol +33 -26
  214. package/contracts/instance/module/pool/IPoolModule.sol +0 -1
  215. package/contracts/instance/module/pool/PoolModule.sol +12 -9
  216. package/contracts/instance/module/risk/IRisk.sol +18 -2
  217. package/contracts/instance/module/risk/RiskModule.sol +56 -2
  218. package/contracts/instance/module/treasury/ITreasury.sol +29 -50
  219. package/contracts/instance/module/treasury/TreasuryModule.sol +71 -85
  220. package/contracts/instance/service/ComponentOwnerService.sol +30 -44
  221. package/contracts/instance/service/DistributionService.sol +59 -0
  222. package/contracts/instance/service/IComponentOwnerService.sol +1 -1
  223. package/contracts/instance/service/IDistributionService.sol +12 -0
  224. package/contracts/instance/service/IPoolService.sol +8 -1
  225. package/contracts/instance/service/IProductService.sol +56 -7
  226. package/contracts/instance/service/PoolService.sol +31 -5
  227. package/contracts/instance/service/ProductService.sol +231 -77
  228. package/contracts/registry/Registry.sol +4 -4
  229. package/contracts/registry/RegistryUpgradeable.sol +473 -0
  230. package/contracts/shared/IVersionable.sol +17 -4
  231. package/contracts/shared/Proxy.sol +94 -0
  232. package/contracts/shared/Versionable.sol +13 -3
  233. package/contracts/shared/VersionableUpgradeable.sol +133 -0
  234. package/contracts/test/TestDistribution.sol +21 -0
  235. package/contracts/test/TestPool.sol +5 -2
  236. package/contracts/test/TestProduct.sol +35 -7
  237. package/contracts/test/TestRoleId.sol +2 -2
  238. package/contracts/test/TestService.sol +1 -1
  239. package/contracts/types/Fee.sol +8 -3
  240. package/contracts/types/Key32.sol +45 -0
  241. package/contracts/types/NftId.sol +16 -1
  242. package/contracts/types/ObjectType.sol +24 -8
  243. package/contracts/types/ReferralId.sol +48 -0
  244. package/contracts/types/RiskId.sol +43 -0
  245. package/contracts/types/RoleId.sol +12 -10
  246. package/contracts/types/StateId.sol +7 -1
  247. package/contracts/types/Version.sol +8 -0
  248. package/package.json +1 -1
  249. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  250. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  251. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  252. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  253. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  254. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  255. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  256. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  257. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  258. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  259. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  260. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  261. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  262. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  263. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  264. package/contracts/instance/IServiceLinked.sol +0 -12
  265. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  266. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  267. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  268. /package/contracts/instance/{service → base}/IService.sol +0 -0
@@ -0,0 +1,161 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../../types/Blocknumber.sol";
5
+ import {Key32, KeyId, Key32Lib} from "../../types/Key32.sol";
6
+ import {NftId} from "../../types/NftId.sol";
7
+ import {ObjectType} from "../../types/ObjectType.sol";
8
+ import {StateId, ACTIVE} from "../../types/StateId.sol";
9
+ import {Timestamp, blockTimestamp, zeroTimestamp} from "../../types/Timestamp.sol";
10
+
11
+ import {Lifecycle} from "./Lifecycle.sol";
12
+ import {IKeyValueStore} from "./IKeyValueStore.sol";
13
+
14
+ contract KeyValueStore is Lifecycle, IKeyValueStore {
15
+
16
+ mapping(Key32 key32 => Value value) private _value;
17
+ address private _owner;
18
+
19
+ modifier onlyOwner() {
20
+ require(
21
+ msg.sender == _owner,
22
+ "ERROR:KVS-001:NOT_OWNER");
23
+ _;
24
+ }
25
+
26
+ constructor() {
27
+ _owner = msg.sender;
28
+ }
29
+
30
+ function create(
31
+ Key32 key32,
32
+ ObjectType objectType,
33
+ bytes memory data
34
+ )
35
+ public
36
+ onlyOwner
37
+ {
38
+ require(objectType.gtz(), "ERROR:KVS-010:TYPE_UNDEFINED");
39
+
40
+ Metadata storage metadata = _value[key32].metadata;
41
+ require(metadata.state.eqz(), "ERROR:KVS-012:ALREADY_CREATED");
42
+
43
+ address createdBy = msg.sender;
44
+ Blocknumber blocknumber = blockBlocknumber();
45
+ StateId initialState = hasLifecycle(objectType) ? getInitialState(objectType) : ACTIVE();
46
+
47
+ // set metadata
48
+ metadata.objectType = objectType;
49
+ metadata.state = initialState;
50
+ metadata.updatedBy = createdBy;
51
+ metadata.updatedIn = blocknumber;
52
+ metadata.createdIn = blocknumber;
53
+
54
+ // set data
55
+ _value[key32].data = data;
56
+
57
+ // solhint-disable-next-line avoid-tx-origin
58
+ emit LogInfoCreated(toKey(key32), initialState, createdBy, tx.origin);
59
+ }
60
+
61
+ function update(Key32 key32, StateId state, bytes memory data)
62
+ public
63
+ onlyOwner
64
+ {
65
+ require(state.gtz(), "ERROR:KVS-020:STATE_UNDEFINED");
66
+ Metadata storage metadata = _value[key32].metadata;
67
+ StateId stateOld = metadata.state;
68
+ require(stateOld.gtz(), "ERROR:KVS-021:NOT_EXISTING");
69
+
70
+ // update data
71
+ _value[key32].data = data;
72
+
73
+ // update metadata (and state)
74
+ address updatedBy = msg.sender;
75
+ Blocknumber lastUpdatedIn = metadata.updatedIn;
76
+ metadata.state = state;
77
+ metadata.updatedBy = updatedBy;
78
+ metadata.updatedIn = blockBlocknumber();
79
+
80
+ // create log entries
81
+ Key memory key = toKey(key32);
82
+ // solhint-disable-next-line avoid-tx-origin
83
+ emit LogStateUpdated(key, state, stateOld, updatedBy, tx.origin, lastUpdatedIn);
84
+ // solhint-disable-next-line avoid-tx-origin
85
+ emit LogInfoUpdated(key, state, updatedBy, tx.origin, lastUpdatedIn);
86
+ }
87
+
88
+ function updateData(Key32 key32, bytes memory data)
89
+ public
90
+ onlyOwner
91
+ {
92
+ Metadata storage metadata = _value[key32].metadata;
93
+ StateId state = metadata.state;
94
+ require(state.gtz(), "ERROR:KVS-030:NOT_EXISTING");
95
+
96
+ // update data
97
+ _value[key32].data = data;
98
+
99
+ // update metadata
100
+ address updatedBy = msg.sender;
101
+ Blocknumber lastUpdatedIn = metadata.updatedIn;
102
+ metadata.updatedBy = updatedBy;
103
+ metadata.updatedIn = blockBlocknumber();
104
+
105
+ // create log entry
106
+ Key memory key = toKey(key32);
107
+ // solhint-disable-next-line avoid-tx-origin
108
+ emit LogInfoUpdated(key, state, updatedBy, tx.origin, lastUpdatedIn);
109
+ }
110
+
111
+ function updateState(Key32 key32, StateId state)
112
+ public
113
+ onlyOwner
114
+ {
115
+ require(state.gtz(), "ERROR:KVS-040:STATE_UNDEFINED");
116
+ Metadata storage metadata = _value[key32].metadata;
117
+ StateId stateOld = metadata.state;
118
+ require(stateOld.gtz(), "ERROR:KVS-041:NOT_EXISTING");
119
+
120
+ // update metadata (and state)
121
+ address updatedBy = msg.sender;
122
+ Blocknumber lastUpdatedIn = metadata.updatedIn;
123
+ metadata.state = state;
124
+ metadata.updatedBy = updatedBy;
125
+ metadata.updatedIn = blockBlocknumber();
126
+
127
+ // create log entry
128
+ Key memory key = toKey(key32);
129
+ // solhint-disable-next-line avoid-tx-origin
130
+ emit LogStateUpdated(key, state, stateOld, updatedBy, tx.origin, lastUpdatedIn);
131
+ }
132
+
133
+ function exists(Key32 key32) public view returns (bool) {
134
+ return _value[key32].metadata.state.gtz();
135
+ }
136
+
137
+ function get(Key32 key32) public view returns (Value memory value) {
138
+ return _value[key32];
139
+ }
140
+
141
+ function getMetadata(Key32 key32) public view returns (Metadata memory metadata) {
142
+ return _value[key32].metadata;
143
+ }
144
+
145
+ function getData(Key32 key32) public view returns (bytes memory data) {
146
+ return _value[key32].data;
147
+ }
148
+
149
+ function getState(Key32 key32) public view returns (StateId state) {
150
+ return _value[key32].metadata.state;
151
+ }
152
+
153
+ function toKey32(ObjectType objectType, KeyId id) external pure override returns(Key32) {
154
+ return Key32Lib.toKey32(objectType, id);
155
+ }
156
+
157
+ function toKey(Key32 key32) public pure override returns (Key memory key) {
158
+ (ObjectType objectType, KeyId id) = key32.toKey();
159
+ return Key(objectType, id);
160
+ }
161
+ }
@@ -1,12 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {NftId} from "../../../types/NftId.sol";
5
- import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../../types/ObjectType.sol";
6
- import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, UNDERWRITTEN, REVOKED, DECLINED} from "../../../types/StateId.sol";
7
- import {ILifecycleModule} from "./ILifecycle.sol";
4
+ import {NftId} from "../../types/NftId.sol";
5
+ import {ObjectType, COMPONENT, BUNDLE, POLICY, RISK} from "../../types/ObjectType.sol";
6
+ import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, UNDERWRITTEN, REVOKED, DECLINED} from "../../types/StateId.sol";
7
+ import {ILifecycle} from "./ILifecycle.sol";
8
8
 
9
- contract LifecycleModule is ILifecycleModule {
9
+ contract Lifecycle is ILifecycle {
10
10
  mapping(ObjectType objectType => StateId initialState)
11
11
  private _initialState;
12
12
 
@@ -14,46 +14,50 @@ contract LifecycleModule is ILifecycleModule {
14
14
  private _isValidTransition;
15
15
 
16
16
  constructor() {
17
- _setupComponentLifecycle(PRODUCT());
18
- _setupComponentLifecycle(ORACLE());
19
- _setupComponentLifecycle(POOL());
20
-
21
17
  _setupBundleLifecycle();
18
+ _setupComponentLifecycle();
22
19
  _setupPolicyLifecycle();
20
+ _setupRiskLifecycle();
21
+ }
22
+
23
+ function hasLifecycle(
24
+ ObjectType objectType
25
+ )
26
+ public
27
+ view
28
+ override
29
+ returns (bool)
30
+ {
31
+ return _initialState[objectType].gtz();
32
+ }
33
+
34
+ function getInitialState(
35
+ ObjectType objectType
36
+ )
37
+ public
38
+ view
39
+ returns (StateId)
40
+ {
41
+ return _initialState[objectType];
23
42
  }
24
43
 
25
- function checkAndLogTransition(
26
- NftId nftId,
44
+ function checkTransition(
27
45
  ObjectType objectType,
28
46
  StateId fromId,
29
47
  StateId toId
30
- ) public returns (StateId) // add only currentcontract? would that work?
48
+ )
49
+ public
50
+ view
31
51
  {
32
- if (!_isValidTransition[objectType][fromId][toId]) {
33
- revert ErrorInvalidStateTransition(nftId, objectType, fromId, toId);
52
+ // return if no life cycle support
53
+ if (_initialState[objectType].eqz()) {
54
+ return;
34
55
  }
35
56
 
36
- if (objectType == POLICY()) {
37
- emit LogPolicyStateChanged(nftId, fromId, toId);
38
- } else if (objectType == BUNDLE()) {
39
- emit LogBundleStateChanged(nftId, fromId, toId);
40
- } else if (
41
- objectType == PRODUCT() ||
42
- objectType == ORACLE() ||
43
- objectType == POOL()
44
- ) {
45
- emit LogComponentStateChanged(nftId, objectType, fromId, toId);
46
- } else {
47
- revert ErrorNoLifecycle(nftId, objectType);
57
+ // enforce valid state transition
58
+ if (!_isValidTransition[objectType][fromId][toId]) {
59
+ revert ErrorInvalidStateTransition(objectType, fromId, toId);
48
60
  }
49
-
50
- return toId;
51
- }
52
-
53
- function getInitialState(
54
- ObjectType objectType
55
- ) public view returns (StateId) {
56
- return _initialState[objectType];
57
61
  }
58
62
 
59
63
  function isValidTransition(
@@ -64,11 +68,11 @@ contract LifecycleModule is ILifecycleModule {
64
68
  return _isValidTransition[objectType][fromId][toId];
65
69
  }
66
70
 
67
- function _setupComponentLifecycle(ObjectType objectType) internal {
68
- _initialState[objectType] = ACTIVE();
69
- _isValidTransition[objectType][ACTIVE()][PAUSED()] = true;
70
- _isValidTransition[objectType][PAUSED()][ACTIVE()] = true;
71
- _isValidTransition[objectType][PAUSED()][ARCHIVED()] = true;
71
+ function _setupComponentLifecycle() internal {
72
+ _initialState[COMPONENT()] = ACTIVE();
73
+ _isValidTransition[COMPONENT()][ACTIVE()][PAUSED()] = true;
74
+ _isValidTransition[COMPONENT()][PAUSED()][ACTIVE()] = true;
75
+ _isValidTransition[COMPONENT()][PAUSED()][ARCHIVED()] = true;
72
76
  }
73
77
 
74
78
  function _setupBundleLifecycle() internal {
@@ -86,4 +90,11 @@ contract LifecycleModule is ILifecycleModule {
86
90
  _isValidTransition[POLICY()][UNDERWRITTEN()][ACTIVE()] = true;
87
91
  _isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
88
92
  }
93
+
94
+ function _setupRiskLifecycle() internal {
95
+ _initialState[RISK()] = ACTIVE();
96
+ _isValidTransition[RISK()][ACTIVE()][PAUSED()] = true;
97
+ _isValidTransition[RISK()][PAUSED()][ACTIVE()] = true;
98
+ _isValidTransition[RISK()][PAUSED()][ARCHIVED()] = true;
99
+ }
89
100
  }
@@ -0,0 +1,57 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRegistry} from "../../registry/IRegistry.sol";
5
+
6
+ import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
7
+ import {Key32, KeyId} from "../../types/Key32.sol";
8
+ import {LibNftIdSet} from "../../types/NftIdSet.sol";
9
+ import {NftId} from "../../types/NftId.sol";
10
+ import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../types/ObjectType.sol";
11
+ import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../types/StateId.sol";
12
+ import {Timestamp, blockTimestamp, zeroTimestamp} from "../../types/Timestamp.sol";
13
+
14
+ import {IKeyValueStore} from "./IKeyValueStore.sol";
15
+
16
+ abstract contract ModuleBase {
17
+
18
+ IKeyValueStore private _store;
19
+
20
+ function _initialize(IKeyValueStore keyValueStore) internal {
21
+ _store = keyValueStore;
22
+ }
23
+
24
+ function _create(ObjectType objectType, Key32 key, bytes memory data) internal {
25
+ _store.create(
26
+ key,
27
+ objectType,
28
+ data);
29
+ }
30
+
31
+ function _create(ObjectType objectType, NftId nftId, bytes memory data) internal {
32
+ _store.create(
33
+ nftId.toKey32(objectType),
34
+ objectType,
35
+ data);
36
+ }
37
+
38
+ function _updateData(ObjectType objectType, NftId nftId, bytes memory data) internal {
39
+ _store.updateData(nftId.toKey32(objectType), data);
40
+ }
41
+
42
+ function _updateState(ObjectType objectType, NftId nftId, StateId state) internal {
43
+ _store.updateState(nftId.toKey32(objectType), state);
44
+ }
45
+
46
+ function _exists(ObjectType objectType, NftId nftId) internal view returns (bool hasData) {
47
+ return _store.exists(nftId.toKey32(objectType));
48
+ }
49
+
50
+ function _getData(ObjectType objectType, NftId nftId) internal view returns(bytes memory data) {
51
+ return _store.getData(nftId.toKey32(objectType));
52
+ }
53
+
54
+ function _getState(ObjectType objectType, NftId nftId) internal view returns(StateId) {
55
+ return _store.getState(nftId.toKey32(objectType));
56
+ }
57
+ }
@@ -1,8 +1,6 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- // import {IRegistry} from "../../registry/IRegistry.sol";
5
- // import {ITreasury, ITreasuryModule, TokenHandler} from "../../instance/module/treasury/ITreasury.sol";
6
4
  import {NftId, zeroNftId} from "../../types/NftId.sol";
7
5
  import {ObjectType, SERVICE} from "../../types/ObjectType.sol";
8
6
  import {Version, VersionPart} from "../../types/Version.sol";
@@ -5,9 +5,9 @@ pragma solidity ^0.8.19;
5
5
  // import {AccessControlEnumerable} from "@openzeppelin/contracts/access/AccessControlEnumerable.sol";
6
6
  import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
7
7
 
8
- import {RoleId, toRoleId} from "../../../types/RoleId.sol";
9
- import {DISTRIBUTOR_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../../../types/RoleId.sol";
10
- import {DISTRIBUTOR_OWNER_ROLE_NAME, ORACLE_OWNER_ROLE_NAME, POOL_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE_NAME} from "../../../types/RoleId.sol";
8
+ import {RoleId, RoleIdLib} from "../../../types/RoleId.sol";
9
+ import {DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../../../types/RoleId.sol";
10
+ import {DISTRIBUTION_OWNER_ROLE_NAME, ORACLE_OWNER_ROLE_NAME, POOL_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE_NAME} from "../../../types/RoleId.sol";
11
11
  import {IAccessModule} from "./IAccess.sol";
12
12
 
13
13
  abstract contract AccessModule is IAccessModule {
@@ -36,7 +36,7 @@ abstract contract AccessModule is IAccessModule {
36
36
  }
37
37
 
38
38
  constructor() {
39
- _createRole(DISTRIBUTOR_OWNER_ROLE(), DISTRIBUTOR_OWNER_ROLE_NAME());
39
+ _createRole(DISTRIBUTION_OWNER_ROLE(), DISTRIBUTION_OWNER_ROLE_NAME());
40
40
  _createRole(ORACLE_OWNER_ROLE(), ORACLE_OWNER_ROLE_NAME());
41
41
  _createRole(POOL_OWNER_ROLE(), POOL_OWNER_ROLE_NAME());
42
42
  _createRole(PRODUCT_OWNER_ROLE(), PRODUCT_OWNER_ROLE_NAME());
@@ -45,7 +45,7 @@ abstract contract AccessModule is IAccessModule {
45
45
  function createRole(
46
46
  string memory roleName
47
47
  ) public override onlyAccessOwner returns (RoleId role) {
48
- role = toRoleId(roleName);
48
+ role = RoleIdLib.toRoleId(roleName);
49
49
  require(
50
50
  !roleExists(role),
51
51
  "ERROR:ACS-010:ROLE_ALREADY_EXISTS");
@@ -95,7 +95,7 @@ abstract contract AccessModule is IAccessModule {
95
95
  }
96
96
 
97
97
  function getRoleId(string memory roleName) external pure override returns (RoleId role) {
98
- return toRoleId(roleName);
98
+ return RoleIdLib.toRoleId(roleName);
99
99
  }
100
100
 
101
101
  function getRoleInfo(
@@ -3,32 +3,33 @@ pragma solidity ^0.8.19;
3
3
 
4
4
  import {IRegistry} from "../../../registry/IRegistry.sol";
5
5
 
6
- import {LifecycleModule} from "../lifecycle/LifecycleModule.sol";
7
6
  import {IProductService} from "../../service/IProductService.sol";
8
7
  import {IPoolService} from "../../service/IPoolService.sol";
9
8
 
9
+ import {Fee} from "../../../types/Fee.sol";
10
10
  import {NftId} from "../../../types/NftId.sol";
11
+ import {Key32, KeyId} from "../../../types/Key32.sol";
11
12
  import {LibNftIdSet} from "../../../types/NftIdSet.sol";
12
13
  import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../../types/ObjectType.sol";
13
14
  import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../../types/StateId.sol";
14
15
  import {Timestamp, blockTimestamp, zeroTimestamp} from "../../../types/Timestamp.sol";
15
16
  import {Blocknumber, blockNumber} from "../../../types/Blocknumber.sol";
16
17
 
17
- import {ILifecycleModule} from "../lifecycle/ILifecycle.sol";
18
+ import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
19
+ import {ModuleBase} from "../../base/ModuleBase.sol";
20
+
18
21
  import {IBundleModule} from "./IBundle.sol";
19
22
 
20
- abstract contract BundleModule is
23
+ abstract contract BundleModule is
24
+ ModuleBase,
21
25
  IBundleModule
22
26
  {
23
27
 
24
28
  using LibNftIdSet for LibNftIdSet.Set;
25
29
 
26
- mapping(NftId bundleNftId => BundleInfo info) private _bundleInfo;
27
30
  mapping(NftId bundleNftId => LibNftIdSet.Set policies) private _collateralizedPolicies;
28
31
  mapping(NftId bundleNftId => mapping(NftId policyNftId => uint256 amount)) private _collateralizationAmount;
29
32
 
30
- LifecycleModule private _lifecycleModule;
31
-
32
33
  modifier onlyBundlePoolService() {
33
34
  require(
34
35
  msg.sender == address(this.getPoolService()),
@@ -54,13 +55,14 @@ abstract contract BundleModule is
54
55
  _;
55
56
  }
56
57
 
57
- constructor() {
58
- _lifecycleModule = LifecycleModule(address(this));
58
+ function initializeBundleModule(IKeyValueStore keyValueStore) internal {
59
+ _initialize(keyValueStore);
59
60
  }
60
61
 
61
62
  function createBundleInfo(
62
63
  NftId bundleNftId,
63
64
  NftId poolNftId,
65
+ Fee memory fee,
64
66
  uint256 amount,
65
67
  uint256 lifetime,
66
68
  bytes calldata filter
@@ -69,101 +71,35 @@ abstract contract BundleModule is
69
71
  onlyBundlePoolService
70
72
  override
71
73
  {
72
-
73
- _bundleInfo[bundleNftId] = BundleInfo(
74
- bundleNftId,
74
+ BundleInfo memory info = BundleInfo(
75
75
  poolNftId,
76
- _lifecycleModule.getInitialState(BUNDLE()),
76
+ fee,
77
77
  filter,
78
78
  amount, // capital
79
79
  0, // locked capital
80
80
  amount, // balance
81
- blockTimestamp(), // createdAt
82
81
  blockTimestamp().addSeconds(lifetime), // expiredAt
83
- zeroTimestamp(), // closedAt
84
- blockNumber() // updatedIn
82
+ zeroTimestamp() // closedAt
85
83
  );
86
84
 
87
- // TODO add logging
85
+ _create(BUNDLE(), bundleNftId, abi.encode(info));
88
86
  }
89
87
 
90
- function setBundleInfo(BundleInfo memory bundleInfo)
88
+ function setBundleInfo(NftId bundleNftId, BundleInfo memory info)
91
89
  external
92
90
  override
93
91
  onlyPoolOrProductService
94
92
  {
95
- _bundleInfo[bundleInfo.nftId] = bundleInfo;
93
+ _updateData(BUNDLE(), bundleNftId, abi.encode(info));
96
94
  }
97
95
 
98
- // function updateBundleState(
99
- // NftId bundleNftId,
100
- // StateId newState
101
- // )
102
- // external
103
- // // add authz (both product and pool service)
104
- // override
105
- // {
106
- // BundleInfo storage info = _bundleInfo[bundleNftId];
107
- // info.state = newState;
108
- // info.updatedIn = blockNumber();
109
- // }
110
-
111
- // function extendBundle(
112
- // NftId bundleNftId,
113
- // uint256 lifetimeExtension
114
- // )
115
- // external
116
- // onlyBundlePoolService
117
- // override
118
- // {
119
- // BundleInfo storage info = _bundleInfo[bundleNftId];
120
- // info.expiredAt = info.expiredAt.addSeconds(lifetimeExtension);
121
- // info.updatedIn = blockNumber();
122
- // }
123
-
124
- // function closeBundle(
125
- // NftId bundleNftId
126
- // )
127
- // external
128
- // onlyBundlePoolService
129
- // override
130
- // {
131
- // BundleInfo storage info = _bundleInfo[bundleNftId];
132
- // info.state = CLOSED();
133
- // info.closedAt = blockTimestamp();
134
- // info.updatedIn = blockNumber();
135
- // }
136
-
137
- // function processStake(
138
- // NftId nftId,
139
- // uint256 amount
140
- // )
141
- // external
142
- // onlyBundlePoolService
143
- // override
144
- // {
145
- // BundleInfo storage info = _bundleInfo[nftId];
146
- // info.capitalAmount += amount;
147
- // info.balanceAmount += amount;
148
- // info.updatedIn = blockNumber();
149
- // }
150
-
151
- // function processUnstake(
152
- // NftId nftId,
153
- // uint256 amount
154
- // )
155
- // external
156
- // onlyBundlePoolService
157
- // override
158
- // {
159
- // BundleInfo storage info = _bundleInfo[nftId];
160
- // // TODO fix book keeping in a way that provides
161
- // // continuous infor regarding profitability
162
- // // this is needed to properly apply performance fees
163
- // info.capitalAmount -= amount;
164
- // info.balanceAmount -= amount;
165
- // info.updatedIn = blockNumber();
166
- // }
96
+ function updateBundleState(NftId bundleNftId, StateId state)
97
+ external
98
+ override
99
+ onlyBundlePoolService
100
+ {
101
+ _updateState(BUNDLE(), bundleNftId, state);
102
+ }
167
103
 
168
104
  function collateralizePolicy(
169
105
  NftId bundleNftId,
@@ -187,42 +123,12 @@ abstract contract BundleModule is
187
123
  override
188
124
  returns(uint256 collateralAmount)
189
125
  {
190
- // BundleInfo storage info = _bundleInfo[bundleNftId];
191
- // info.lockedAmount -= collateralAmount;
192
- // info.updatedIn = blockNumber();
193
-
194
126
  collateralAmount = _collateralizationAmount[bundleNftId][policyNftId];
195
127
  delete _collateralizationAmount[bundleNftId][policyNftId];
196
128
  _collateralizedPolicies[bundleNftId].remove(policyNftId);
197
129
  }
198
130
 
199
- // function addPremium(NftId bundleNftId, uint256 amount)
200
- // external
201
- // onlyBundleProductService
202
- // override
203
- // {
204
- // BundleInfo storage info = _bundleInfo[bundleNftId];
205
- // info.capitalAmount += amount;
206
- // info.balanceAmount += amount;
207
- // info.updatedIn = blockNumber();
208
- // }
209
-
210
- // function subtractPayout(NftId bundleNftId, NftId policyNftId, uint256 amount)
211
- // external
212
- // onlyBundleProductService
213
- // override
214
- // {
215
- // BundleInfo storage info = _bundleInfo[bundleNftId];
216
- // info.capitalAmount -= amount;
217
- // info.lockedAmount -= amount;
218
- // info.balanceAmount -= amount;
219
- // info.updatedIn = blockNumber();
220
-
221
- // // deduct amount from sum insured for this policy
222
- // _collateralizationAmount[bundleNftId][policyNftId] -= amount;
223
- // }
224
-
225
131
  function getBundleInfo(NftId bundleNftId) external view override returns(BundleInfo memory bundleInfo) {
226
- return _bundleInfo[bundleNftId];
132
+ return abi.decode(_getData(BUNDLE(), bundleNftId), (BundleInfo));
227
133
  }
228
134
  }
@@ -3,28 +3,28 @@ pragma solidity ^0.8.19;
3
3
 
4
4
  import {IRegistry} from "../../../registry/IRegistry.sol";
5
5
  import {IInstance} from "../../IInstance.sol";
6
+ import {Fee} from "../../../types/Fee.sol";
7
+ import {Key32} from "../../../types/Key32.sol";
6
8
  import {NftId} from "../../../types/NftId.sol";
7
9
  import {StateId} from "../../../types/StateId.sol";
8
10
  import {Timestamp} from "../../../types/Timestamp.sol";
9
11
  import {Blocknumber} from "../../../types/Blocknumber.sol";
10
12
 
13
+ import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
11
14
  import {IProductService} from "../../service/IProductService.sol";
12
15
  import {IPoolService} from "../../service/IPoolService.sol";
13
16
 
14
17
  interface IBundle {
15
18
 
16
19
  struct BundleInfo {
17
- NftId nftId;
18
20
  NftId poolNftId;
19
- StateId state; // active, paused, closed (expriy only implicit)
21
+ Fee fee; // bundle fee on net premium amounts
20
22
  bytes filter; // required conditions for applications to be considered for collateralization by this bundle
21
23
  uint256 capitalAmount; // net investment capital amount (<= balance)
22
24
  uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
23
25
  uint256 balanceAmount; // total amount of funds: net investment capital + net premiums - payouts
24
- Timestamp createdAt;
25
26
  Timestamp expiredAt; // no new policies
26
27
  Timestamp closedAt;
27
- Blocknumber updatedIn;
28
28
  }
29
29
  }
30
30
 
@@ -33,19 +33,19 @@ interface IBundleModule is IBundle {
33
33
  function createBundleInfo(
34
34
  NftId bundleNftId,
35
35
  NftId poolNftId,
36
+ Fee memory fee,
36
37
  uint256 amount,
37
38
  uint256 lifetime,
38
39
  bytes calldata filter
39
40
  ) external;
40
41
 
41
- function setBundleInfo(BundleInfo memory bundleInfo) external;
42
+ function setBundleInfo(NftId nftId, BundleInfo memory bundleInfo) external;
43
+ function updateBundleState(NftId nftId, StateId state) external;
44
+
42
45
  function collateralizePolicy(NftId bundleNftId, NftId policyNftId, uint256 amount) external;
43
46
  function releasePolicy(NftId bundleNftId, NftId policyNftId) external returns(uint256 collateralAmount);
44
47
 
45
- function getBundleInfo(NftId bundleNftId) external view returns(BundleInfo memory bundleInfo);
46
-
47
- // repeat registry linked signature
48
- function getRegistry() external view returns (IRegistry registry);
48
+ function getBundleInfo(NftId nftId) external view returns(BundleInfo memory bundleInfo);
49
49
 
50
50
  // repeat service linked signatures to avoid linearization issues
51
51
  function getProductService() external returns(IProductService);