@etherisc/gif-next 0.0.2-f619be3-760 → 0.0.2-f72939c-380

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 (343) hide show
  1. package/README.md +114 -11
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/components/{Component.sol/Component.json → BaseComponent.sol/BaseComponent.json} +26 -57
  4. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  5. package/artifacts/contracts/{instance/component/IComponent.sol/IComponentContract.json → components/IBaseComponent.sol/IBaseComponent.json} +26 -57
  6. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +356 -0
  8. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → IProductComponent.sol/IProductComponent.json} +89 -65
  10. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  11. package/artifacts/contracts/components/Pool.sol/Pool.json +156 -29
  12. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  13. package/artifacts/contracts/components/Product.sol/Product.json +74 -72
  14. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  15. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  16. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  26. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  30. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  32. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  34. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  35. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1124 -598
  36. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
  37. package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
  38. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/Instance.sol/Instance.json +1424 -782
  40. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  41. package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → base/ComponentServiceBase.sol/ComponentServiceBase.json} +133 -132
  42. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  43. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +81 -0
  44. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  45. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
  46. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  47. package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  48. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/IService.sol/IService.json +300 -0
  50. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  51. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +344 -0
  52. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  53. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -0
  54. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  55. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  56. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.json +10 -0
  58. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +300 -0
  60. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
  61. package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
  62. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
  63. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
  64. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
  65. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
  66. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
  67. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +265 -0
  68. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
  69. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
  70. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
  71. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +265 -0
  72. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +10 -0
  74. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +10 -0
  76. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +10 -0
  78. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
  79. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +136 -0
  80. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
  81. package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
  82. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
  83. package/artifacts/contracts/instance/{product/IProductService.sol/IProductService.json → module/component/IComponent.sol/IComponentModule.json} +66 -57
  84. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
  85. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
  86. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
  87. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +145 -111
  88. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +146 -112
  90. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
  92. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPoolModule.json +67 -52
  94. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
  95. package/artifacts/contracts/instance/{pool → module/pool}/PoolModule.sol/PoolModule.json +51 -62
  96. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
  97. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
  98. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
  99. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +132 -0
  100. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +150 -0
  102. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{treasury → module/treasury}/ITreasury.sol/ITreasury.json +1 -1
  104. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
  105. package/artifacts/contracts/instance/{treasury → module/treasury}/ITreasury.sol/ITreasuryModule.json +231 -190
  106. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  107. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
  108. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
  109. package/artifacts/contracts/instance/{treasury → module/treasury}/TreasuryModule.sol/TreasuryModule.json +232 -191
  110. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +523 -0
  112. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +364 -0
  114. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +376 -0
  116. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  117. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +548 -0
  118. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  119. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +471 -0
  120. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  121. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +744 -0
  122. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  123. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +65 -2
  124. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  125. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  126. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +147 -30
  127. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  128. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
  129. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  130. package/artifacts/contracts/registry/Registry.sol/Registry.json +241 -25
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  132. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  133. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
  134. package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  136. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +16 -61
  137. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  138. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +164 -0
  139. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  140. package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +16 -61
  141. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  142. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +164 -0
  143. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  144. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  145. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
  146. package/artifacts/contracts/test/TestPool.sol/TestPool.json +455 -0
  147. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
  148. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +479 -0
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  150. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  152. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  153. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  154. package/artifacts/contracts/test/TestService.sol/TestService.json +379 -0
  155. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  156. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
  157. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  158. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  159. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  160. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +206 -0
  161. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  162. package/artifacts/contracts/{mock → test}/Usdc.sol/USDC.json +3 -3
  163. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  164. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  165. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  168. package/artifacts/contracts/types/Fee.sol/FeeLib.json +218 -0
  169. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  170. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
  171. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  173. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  174. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
  175. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  177. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  178. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  179. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  180. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
  181. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  183. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +64 -2
  185. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +58 -58
  187. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  188. package/artifacts/contracts/types/Version.sol/VersionLib.json +139 -0
  189. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  190. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
  191. package/contracts/components/BaseComponent.sol +94 -0
  192. package/contracts/components/IBaseComponent.sol +19 -0
  193. package/contracts/components/IPoolComponent.sol +57 -0
  194. package/contracts/components/{IProduct.sol → IProductComponent.sol} +9 -6
  195. package/contracts/components/Pool.sol +155 -16
  196. package/contracts/components/Product.sol +116 -24
  197. package/contracts/instance/IInstance.sol +37 -11
  198. package/contracts/instance/IInstanceLinked.sol +8 -0
  199. package/contracts/instance/Instance.sol +48 -49
  200. package/contracts/instance/base/ComponentServiceBase.sol +42 -0
  201. package/contracts/instance/base/IInstanceBase.sol +19 -0
  202. package/contracts/instance/base/IKeyValueStore.sol +50 -0
  203. package/contracts/instance/{lifecycle → base}/ILifecycle.sol +4 -21
  204. package/contracts/instance/base/IService.sol +15 -0
  205. package/contracts/instance/base/InstanceBase.sol +84 -0
  206. package/contracts/instance/base/KeyValueStore.sol +161 -0
  207. package/contracts/instance/base/Lifecycle.sol +100 -0
  208. package/contracts/instance/base/ModuleBase.sol +53 -0
  209. package/contracts/instance/base/ServiceBase.sol +37 -0
  210. package/contracts/instance/module/access/Access.sol +149 -0
  211. package/contracts/instance/module/access/IAccess.sol +53 -0
  212. package/contracts/instance/module/bundle/BundleModule.sol +135 -0
  213. package/contracts/instance/module/bundle/IBundle.sol +51 -0
  214. package/contracts/instance/module/compensation/CompensationModule.sol +17 -0
  215. package/contracts/instance/module/compensation/ICompensation.sol +10 -0
  216. package/contracts/instance/module/component/ComponentModule.sol +81 -0
  217. package/contracts/instance/module/component/IComponent.sol +29 -0
  218. package/contracts/instance/module/policy/IPolicy.sol +62 -0
  219. package/contracts/instance/module/policy/PolicyModule.sol +92 -0
  220. package/contracts/instance/module/pool/IPoolModule.sol +40 -0
  221. package/contracts/instance/module/pool/PoolModule.sol +90 -0
  222. package/contracts/instance/module/risk/IRisk.sol +27 -0
  223. package/contracts/instance/module/risk/RiskModule.sol +70 -0
  224. package/contracts/instance/module/treasury/ITreasury.sol +96 -0
  225. package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
  226. package/contracts/instance/module/treasury/TreasuryModule.sol +171 -0
  227. package/contracts/instance/service/ComponentOwnerService.sol +155 -0
  228. package/contracts/instance/service/IComponentOwnerService.sol +22 -0
  229. package/contracts/instance/service/IPoolService.sol +30 -0
  230. package/contracts/instance/service/IProductService.sol +78 -0
  231. package/contracts/instance/service/PoolService.sol +129 -0
  232. package/contracts/instance/service/ProductService.sol +406 -0
  233. package/contracts/registry/ChainNft.sol +61 -37
  234. package/contracts/registry/IRegistry.sol +24 -34
  235. package/contracts/registry/IRegistryLinked.sol +8 -0
  236. package/contracts/registry/Registry.sol +284 -85
  237. package/contracts/shared/ERC165.sol +21 -0
  238. package/contracts/shared/IOwnable.sol +6 -0
  239. package/contracts/shared/IRegisterable.sol +24 -0
  240. package/contracts/shared/IVersionable.sol +52 -0
  241. package/contracts/shared/Registerable.sol +86 -0
  242. package/contracts/shared/Versionable.sol +89 -0
  243. package/contracts/test/TestFee.sol +25 -0
  244. package/contracts/test/TestPool.sol +24 -0
  245. package/contracts/test/TestProduct.sol +66 -0
  246. package/contracts/test/TestRegisterable.sol +19 -0
  247. package/contracts/test/TestRoleId.sol +14 -0
  248. package/contracts/test/TestService.sol +32 -0
  249. package/contracts/{mock/Dip.sol → test/TestToken.sol} +5 -5
  250. package/contracts/test/TestVersion.sol +44 -0
  251. package/contracts/test/TestVersionable.sol +17 -0
  252. package/contracts/{mock → test}/Usdc.sol +1 -1
  253. package/contracts/types/AddressSet.sol +58 -0
  254. package/contracts/types/Fee.sol +39 -20
  255. package/contracts/types/Key32.sol +45 -0
  256. package/contracts/types/NftId.sol +22 -1
  257. package/contracts/types/NftIdSet.sol +60 -0
  258. package/contracts/types/ObjectType.sol +33 -13
  259. package/contracts/types/RiskId.sol +43 -0
  260. package/contracts/types/RoleId.sol +38 -0
  261. package/contracts/types/StateId.sol +13 -3
  262. package/contracts/types/Timestamp.sol +22 -1
  263. package/contracts/types/UFixed.sol +12 -13
  264. package/contracts/types/Version.sol +95 -0
  265. package/package.json +8 -3
  266. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  267. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  268. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  269. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  270. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  271. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  272. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  273. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  274. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  275. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  276. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  277. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  278. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  279. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  280. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  281. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  282. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  283. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  284. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  285. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  286. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  287. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  288. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  289. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  290. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  291. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  292. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  293. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  294. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  295. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  296. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  297. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  298. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  299. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  300. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  301. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  302. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  303. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  304. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  305. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  306. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  307. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  308. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  309. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  310. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  311. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  312. package/artifacts/contracts/mock/Dip.sol/DIP.dbg.json +0 -4
  313. package/artifacts/contracts/mock/Dip.sol/DIP.json +0 -338
  314. package/artifacts/contracts/mock/TestPool.sol/TestPool.dbg.json +0 -4
  315. package/artifacts/contracts/mock/TestPool.sol/TestPool.json +0 -294
  316. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.dbg.json +0 -4
  317. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.json +0 -384
  318. package/artifacts/contracts/mock/Usdc.sol/USDC.dbg.json +0 -4
  319. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  320. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  321. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  322. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  323. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  324. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  325. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  326. package/contracts/components/Component.sol +0 -77
  327. package/contracts/components/IPool.sol +0 -15
  328. package/contracts/instance/access/Access.sol +0 -165
  329. package/contracts/instance/access/IAccess.sol +0 -63
  330. package/contracts/instance/component/ComponentModule.sol +0 -274
  331. package/contracts/instance/component/IComponent.sol +0 -74
  332. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  333. package/contracts/instance/policy/IPolicy.sol +0 -50
  334. package/contracts/instance/policy/PolicyModule.sol +0 -114
  335. package/contracts/instance/pool/IPoolModule.sol +0 -23
  336. package/contracts/instance/pool/PoolModule.sol +0 -81
  337. package/contracts/instance/product/IProductService.sol +0 -36
  338. package/contracts/instance/product/ProductService.sol +0 -136
  339. package/contracts/instance/treasury/ITreasury.sol +0 -91
  340. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  341. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  342. package/contracts/mock/TestPool.sol +0 -16
  343. package/contracts/mock/TestProduct.sol +0 -39
@@ -2,23 +2,157 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  import {ObjectType, POOL} from "../types/ObjectType.sol";
5
+ import {IProductService} from "../instance/service/IProductService.sol";
6
+ import {IPoolService} from "../instance/service/IPoolService.sol";
7
+ import {NftId} from "../types/NftId.sol";
5
8
  import {Fee} from "../types/Fee.sol";
6
- import {IPoolComponent} from "./IPool.sol";
7
- import {Component} from "./Component.sol";
9
+ import {UFixed} from "../types/UFixed.sol";
10
+ import {IPoolComponent} from "./IPoolComponent.sol";
11
+ import {BaseComponent} from "./BaseComponent.sol";
8
12
 
9
- contract Pool is Component, IPoolComponent {
10
- Fee private _stakingFee;
11
- Fee private _performanceFee;
13
+ contract Pool is BaseComponent, IPoolComponent {
14
+
15
+ bool internal _isVerifying;
16
+ UFixed internal _collateralizationLevel;
17
+
18
+ Fee internal _initialStakingFee;
19
+ Fee internal _initialPerformanceFee;
20
+
21
+ // may be used to interact with instance by derived contracts
22
+ IPoolService internal _poolService;
23
+
24
+ // only relevant to protect callback functions for "active" pools
25
+ IProductService private _productService;
26
+
27
+ modifier onlyPoolService() {
28
+ require(
29
+ msg.sender == address(_poolService),
30
+ "ERROR:POL-001:NOT_POOL_SERVICE");
31
+ _;
32
+ }
33
+
34
+ modifier onlyProductService() {
35
+ require(
36
+ msg.sender == address(_productService),
37
+ "ERROR:POL-002:NOT_PRODUCT_SERVICE");
38
+ _;
39
+ }
12
40
 
13
41
  constructor(
14
42
  address registry,
15
- address instance,
43
+ NftId instanceNftId,
44
+ // TODO refactor into tokenNftId
16
45
  address token,
46
+ bool verifying,
47
+ UFixed collateralizationLevel,
17
48
  Fee memory stakingFee,
18
49
  Fee memory performanceFee
19
- ) Component(registry, instance, token) {
20
- _stakingFee = stakingFee;
21
- _performanceFee = performanceFee;
50
+ )
51
+ BaseComponent(registry, instanceNftId, token)
52
+ {
53
+ _isVerifying = verifying;
54
+ // TODO add validation
55
+ _collateralizationLevel = collateralizationLevel;
56
+ _initialStakingFee = stakingFee;
57
+ _initialPerformanceFee = performanceFee;
58
+
59
+ _poolService = _instance.getPoolService();
60
+ _productService = _instance.getProductService();
61
+ }
62
+
63
+ function createBundle(
64
+ uint256 initialAmount,
65
+ uint256 lifetime,
66
+ bytes memory filter
67
+ )
68
+ external
69
+ virtual override
70
+ returns(NftId bundleNftId)
71
+ {
72
+ address owner = msg.sender;
73
+ bundleNftId = _poolService.createBundle(
74
+ owner,
75
+ initialAmount,
76
+ lifetime,
77
+ filter
78
+ );
79
+
80
+ // TODO add logging
81
+ }
82
+
83
+ /**
84
+ * @dev see {IPool.underwrite}.
85
+ * Default implementation that only writes a {LogUnderwrittenByPool} entry.
86
+ */
87
+ function underwrite(
88
+ NftId policyNftId,
89
+ bytes memory policyData,
90
+ bytes memory bundleFilter,
91
+ uint256 collateralizationAmount
92
+ )
93
+ external
94
+ onlyProductService
95
+ virtual override
96
+ {
97
+ _underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
98
+ }
99
+
100
+ /**
101
+ * @dev see {IPoolComponent.policyMatchesBundle}.
102
+ * Default implementation always returns true
103
+ */
104
+ function policyMatchesBundle(
105
+ bytes memory, // policyData
106
+ bytes memory // bundleFilter
107
+ )
108
+ public
109
+ view
110
+ virtual override
111
+ returns (bool isMatching)
112
+ {
113
+ return true;
114
+ }
115
+
116
+
117
+ function isVerifying() external view override returns (bool verifying) {
118
+ return _isVerifying;
119
+ }
120
+
121
+ function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
122
+ return _collateralizationLevel;
123
+ }
124
+
125
+ function _underwrite(
126
+ NftId policyNftId,
127
+ bytes memory policyData,
128
+ bytes memory bundleFilter,
129
+ uint256 collateralizationAmount
130
+ )
131
+ internal
132
+ {
133
+ require(
134
+ policyMatchesBundle(policyData, bundleFilter),
135
+ "ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
136
+ );
137
+
138
+ emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
139
+ }
140
+
141
+ function _createBundle(
142
+ address bundleOwner,
143
+ uint256 amount,
144
+ uint256 lifetime,
145
+ bytes calldata filter
146
+ )
147
+ internal
148
+ returns(NftId bundleNftId)
149
+ {
150
+ bundleNftId = _poolService.createBundle(
151
+ bundleOwner,
152
+ amount,
153
+ lifetime,
154
+ filter
155
+ );
22
156
  }
23
157
 
24
158
  // from pool component
@@ -28,7 +162,12 @@ contract Pool is Component, IPoolComponent {
28
162
  override
29
163
  returns (Fee memory stakingFee)
30
164
  {
31
- return _stakingFee;
165
+ NftId productNftId = _instance.getProductNftId(getNftId());
166
+ if (productNftId.gtz()) {
167
+ return _instance.getTreasuryInfo(productNftId).stakingFee;
168
+ } else {
169
+ return _initialStakingFee;
170
+ }
32
171
  }
33
172
 
34
173
  function getPerformanceFee()
@@ -37,16 +176,16 @@ contract Pool is Component, IPoolComponent {
37
176
  override
38
177
  returns (Fee memory performanceFee)
39
178
  {
40
- return _performanceFee;
179
+ NftId productNftId = _instance.getProductNftId(getNftId());
180
+ if (productNftId.gtz()) {
181
+ return _instance.getTreasuryInfo(productNftId).performanceFee;
182
+ } else {
183
+ return _initialPerformanceFee;
184
+ }
41
185
  }
42
186
 
43
187
  // from registerable
44
188
  function getType() public pure override returns (ObjectType) {
45
189
  return POOL();
46
190
  }
47
-
48
- // from registerable
49
- function getData() external view override returns (bytes memory data) {
50
- return bytes(abi.encode(getInstance().getNftId()));
51
- }
52
191
  }
@@ -1,37 +1,84 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {IProductService} from "../instance/product/IProductService.sol";
5
- import {Component} from "./Component.sol";
6
- import {IProductComponent} from "./IProduct.sol";
4
+ import {IRisk} from "../instance/module/risk/IRisk.sol";
5
+ import {ITreasury} from "../instance/module/treasury/ITreasury.sol";
6
+ import {IProductService} from "../instance/service/IProductService.sol";
7
+ import {IProductComponent} from "./IProductComponent.sol";
7
8
  import {NftId} from "../types/NftId.sol";
8
9
  import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
10
+ import {RiskId, RiskIdLib} from "../types/RiskId.sol";
11
+ import {StateId} from "../types/StateId.sol";
12
+ import {Timestamp} from "../types/Timestamp.sol";
9
13
  import {Fee} from "../types/Fee.sol";
10
- import {Component} from "./Component.sol";
14
+ import {BaseComponent} from "./BaseComponent.sol";
11
15
 
12
- contract Product is Component, IProductComponent {
13
- IProductService private _productService;
14
- address private _pool;
15
- Fee private _policyFee;
16
- Fee private _processingFee;
16
+ contract Product is BaseComponent, IProductComponent {
17
+ IProductService internal _productService;
18
+ address internal _pool;
19
+ Fee internal _initialPolicyFee;
20
+ Fee internal _initialProcessingFee;
17
21
 
18
22
  constructor(
19
23
  address registry,
20
- address instance,
24
+ NftId instanceNftid,
21
25
  address token,
22
26
  address pool,
23
27
  Fee memory policyFee,
24
28
  Fee memory processingFee
25
- ) Component(registry, instance, token) {
29
+ ) BaseComponent(registry, instanceNftid, token) {
26
30
  // TODO add validation
27
31
  _productService = _instance.getProductService();
28
32
  _pool = pool;
29
- _policyFee = policyFee;
30
- _processingFee = processingFee;
33
+ _initialPolicyFee = policyFee;
34
+ _initialProcessingFee = processingFee;
35
+ }
36
+
37
+ function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
38
+ return RiskIdLib.toRiskId(riskName);
39
+ }
40
+
41
+ function _createRisk(
42
+ RiskId id,
43
+ bytes memory data
44
+ ) internal {
45
+ _productService.createRisk(
46
+ id,
47
+ data
48
+ );
49
+ }
50
+
51
+ function _setRiskInfo(
52
+ RiskId id,
53
+ IRisk.RiskInfo memory info
54
+ ) internal {
55
+ _productService.setRiskInfo(
56
+ id,
57
+ info
58
+ );
59
+ }
60
+
61
+ function _updateRiskState(
62
+ RiskId id,
63
+ StateId state
64
+ ) internal {
65
+ _productService.updateRiskState(
66
+ id,
67
+ state
68
+ );
69
+ }
70
+
71
+ function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
72
+ return _instance.getRiskInfo(id);
73
+ }
74
+
75
+ function _getRiskState(RiskId id) internal view returns (StateId state) {
76
+ return _instance.getRiskState(id);
31
77
  }
32
78
 
33
79
  function _createApplication(
34
80
  address applicationOwner,
81
+ RiskId riskId,
35
82
  uint256 sumInsuredAmount,
36
83
  uint256 premiumAmount,
37
84
  uint256 lifetime,
@@ -39,6 +86,7 @@ contract Product is Component, IProductComponent {
39
86
  ) internal returns (NftId nftId) {
40
87
  nftId = _productService.createApplication(
41
88
  applicationOwner,
89
+ riskId,
42
90
  sumInsuredAmount,
43
91
  premiumAmount,
44
92
  lifetime,
@@ -46,12 +94,39 @@ contract Product is Component, IProductComponent {
46
94
  );
47
95
  }
48
96
 
49
- function _underwrite(NftId nftId) internal {
50
- _productService.underwrite(nftId);
97
+ function _underwrite(
98
+ NftId policyNftId,
99
+ bool requirePremiumPayment,
100
+ Timestamp activateAt
101
+ )
102
+ internal
103
+ {
104
+ _productService.underwrite(
105
+ policyNftId,
106
+ requirePremiumPayment,
107
+ activateAt);
51
108
  }
52
109
 
53
- function _collectPremium(NftId nftId) internal {
54
- _productService.collectPremium(nftId);
110
+ function _collectPremium(
111
+ NftId policyNftId,
112
+ Timestamp activateAt
113
+ )
114
+ internal
115
+ {
116
+ _productService.collectPremium(
117
+ policyNftId,
118
+ activateAt);
119
+ }
120
+
121
+ function _activate(
122
+ NftId policyNftId,
123
+ Timestamp activateAt
124
+ )
125
+ internal
126
+ {
127
+ _productService.activate(
128
+ policyNftId,
129
+ activateAt);
55
130
  }
56
131
 
57
132
  function getPoolNftId() external view override returns (NftId poolNftId) {
@@ -59,13 +134,30 @@ contract Product is Component, IProductComponent {
59
134
  }
60
135
 
61
136
  // from product component
137
+ function setFees(
138
+ Fee memory policyFee,
139
+ Fee memory processingFee
140
+ )
141
+ external
142
+ onlyOwner
143
+ override
144
+ {
145
+ _productService.setFees(policyFee, processingFee);
146
+ }
147
+
148
+
62
149
  function getPolicyFee()
63
150
  external
64
151
  view
65
152
  override
66
153
  returns (Fee memory policyFee)
67
154
  {
68
- return _policyFee;
155
+ NftId productNftId = getNftId();
156
+ if (address(_instance.getTokenHandler(productNftId)) != address(0)) {
157
+ return _instance.getTreasuryInfo(productNftId).policyFee;
158
+ } else {
159
+ return _initialPolicyFee;
160
+ }
69
161
  }
70
162
 
71
163
  function getProcessingFee()
@@ -74,16 +166,16 @@ contract Product is Component, IProductComponent {
74
166
  override
75
167
  returns (Fee memory processingFee)
76
168
  {
77
- return _processingFee;
169
+ NftId productNftId = getNftId();
170
+ if (address(_instance.getTokenHandler(productNftId)) != address(0)) {
171
+ return _instance.getTreasuryInfo(productNftId).processingFee;
172
+ } else {
173
+ return _initialProcessingFee;
174
+ }
78
175
  }
79
176
 
80
177
  // from registerable
81
178
  function getType() public pure override returns (ObjectType) {
82
179
  return PRODUCT();
83
180
  }
84
-
85
- // from registerable
86
- function getData() external view override returns (bytes memory data) {
87
- return bytes(abi.encode(getInstance().getNftId()));
88
- }
89
181
  }
@@ -1,25 +1,51 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {IRegisterable} from "../registry/IRegistry.sol";
5
- import {IAccessModule} from "./access/IAccess.sol";
6
- import {ILifecycleModule} from "./lifecycle/ILifecycle.sol";
7
- import {IComponentModule} from "./component/IComponent.sol";
8
- import {IProductModule} from "./product/IProductService.sol";
9
- import {IPolicyModule} from "./policy/IPolicy.sol";
10
- import {IPoolModule} from "./pool/IPoolModule.sol";
11
- import {ITreasuryModule} from "./treasury/ITreasury.sol";
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+
6
+ import {IVersionable} from "../shared/IVersionable.sol";
7
+ import {IRegisterable} from "../shared/IRegisterable.sol";
8
+ import {IOwnable} from "../shared/IOwnable.sol";
9
+ import {RoleId} from "../types/RoleId.sol";
10
+
11
+ import {IAccessModule} from "./module/access/IAccess.sol";
12
+ import {IBundleModule} from "./module/bundle/IBundle.sol";
13
+ import {ICompensationModule} from "./module/compensation/ICompensation.sol";
14
+ import {IComponentModule} from "./module/component/IComponent.sol";
15
+ import {IPolicyModule} from "./module/policy/IPolicy.sol";
16
+ import {IPoolModule} from "./module/pool/IPoolModule.sol";
17
+ import {IRiskModule} from "./module/risk/IRisk.sol";
18
+ import {ITreasuryModule} from "./module/treasury/ITreasury.sol";
19
+
20
+ import {IKeyValueStore} from "./base/IKeyValueStore.sol";
21
+ import {IRegistry, IRegistryLinked} from "../registry/IRegistryLinked.sol";
22
+
23
+ import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
24
+ import {IProductService} from "./service/IProductService.sol";
25
+ import {IPoolService} from "./service/IPoolService.sol";
26
+ import {IInstanceBase} from "./base/IInstanceBase.sol";
12
27
 
13
28
  // solhint-disable-next-line no-empty-blocks
14
29
  interface IInstance is
30
+ IERC165,
31
+ IVersionable,
15
32
  IRegisterable,
16
33
  IAccessModule,
17
- ILifecycleModule,
18
34
  IPolicyModule,
19
35
  IPoolModule,
36
+ IRiskModule,
37
+ IBundleModule,
20
38
  IComponentModule,
21
- IProductModule,
22
- ITreasuryModule
39
+ ITreasuryModule,
40
+ ICompensationModule,
41
+ IInstanceBase
23
42
  {
43
+ function getRegistry() external view override (IPolicyModule, IRegisterable) returns (IRegistry registry);
44
+ function getOwner() external view override (IOwnable, IAccessModule) returns(address owner);
45
+
46
+ function getKeyValueStore() external view override (IInstanceBase) returns (IKeyValueStore keyValueStore);
47
+ function getComponentOwnerService() external view override (IInstanceBase, IComponentModule) returns(IComponentOwnerService);
48
+ function getProductService() external view override (IInstanceBase, IBundleModule, IPolicyModule) returns(IProductService);
49
+ function getPoolService() external view override (IInstanceBase, IBundleModule, IPoolModule) returns(IPoolService);
24
50
 
25
51
  }
@@ -0,0 +1,8 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IInstance} from "./IInstance.sol";
5
+
6
+ interface IInstanceLinked {
7
+ function getInstance() external view returns (IInstance instance);
8
+ }
@@ -1,72 +1,71 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {Registerable} from "../registry/Registry.sol";
4
+ import {NftId} from "../types/NftId.sol";
5
+ import {RoleId} from "../types/RoleId.sol";
6
+
7
+ import {InstanceBase} from "./base/InstanceBase.sol";
8
+ import {AccessModule} from "./module/access/Access.sol";
9
+ import {CompensationModule} from "./module/compensation/CompensationModule.sol";
10
+ import {ComponentModule} from "./module/component/ComponentModule.sol";
11
+ import {PolicyModule} from "./module/policy/PolicyModule.sol";
12
+ import {PoolModule} from "./module/pool/PoolModule.sol";
13
+ import {RiskModule} from "./module/risk/RiskModule.sol";
14
+ import {BundleModule} from "./module/bundle/BundleModule.sol";
15
+ import {TreasuryModule} from "./module/treasury/TreasuryModule.sol";
16
+
5
17
  import {IRegistry} from "../registry/IRegistry.sol";
18
+ import {Registerable} from "../shared/Registerable.sol";
19
+ import {IAccessModule} from "./module/access/IAccess.sol";
20
+ import {IBundleModule} from "./module/bundle/IBundle.sol";
21
+ import {IComponentModule} from "./module/component/IComponent.sol";
22
+ import {IPoolModule} from "./module/pool/IPoolModule.sol";
23
+ import {IPolicyModule} from "./module/policy/IPolicy.sol";
24
+ import {IInstanceBase} from "./base/IInstanceBase.sol";
6
25
 
7
- import {IAccessModule, AccessModule} from "./access/Access.sol";
8
- import {LifecycleModule} from "./lifecycle/LifecycleModule.sol";
9
- import {ComponentModule} from "./component/ComponentModule.sol";
10
- import {ProductModule} from "./product/ProductService.sol";
11
- import {PolicyModule} from "./policy/PolicyModule.sol";
12
- import {PoolModule} from "./pool/PoolModule.sol";
13
- import {TreasuryModule} from "./treasury/TreasuryModule.sol";
26
+ import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
27
+ import {IProductService} from "./service/IProductService.sol";
28
+ import {IPoolService} from "./service/IPoolService.sol";
14
29
 
15
- import {IInstance} from "./IInstance.sol";
16
- import {ObjectType, INSTANCE} from "../types/ObjectType.sol";
17
- import {NftId, toNftId} from "../types/NftId.sol";
30
+ import {IKeyValueStore} from "./base/IKeyValueStore.sol";
18
31
 
19
32
  contract Instance is
20
- Registerable,
33
+ InstanceBase,
21
34
  AccessModule,
22
- LifecycleModule,
35
+ BundleModule,
23
36
  ComponentModule,
37
+ CompensationModule,
24
38
  PolicyModule,
25
39
  PoolModule,
26
- ProductModule,
27
- TreasuryModule,
28
- IInstance
40
+ RiskModule,
41
+ TreasuryModule
29
42
  {
30
43
  constructor(
31
44
  address registry,
32
- address componentOwnerService,
33
- address productService
45
+ NftId registryNftId
34
46
  )
35
- Registerable(registry)
47
+ InstanceBase(registry, registryNftId)
36
48
  AccessModule()
37
- ComponentModule(componentOwnerService)
38
- PolicyModule(productService)
39
- ProductModule(productService)
40
- PoolModule(productService)
41
- // solhint-disable-next-line no-empty-blocks
49
+ BundleModule()
50
+ ComponentModule()
51
+ PolicyModule()
52
+ PoolModule()
53
+ TreasuryModule()
42
54
  {
43
-
44
- }
45
-
46
- // from registerable
47
- function register() external override returns (NftId nftId) {
48
- require(
49
- address(_registry) != address(0),
50
- "ERROR:PRD-001:REGISTRY_ZERO"
51
- );
52
- return _registry.register(address(this));
55
+ initializeBundleModule(_keyValueStore);
56
+ initializeCompensationModule(_keyValueStore);
57
+ initializeComponentModule(_keyValueStore);
58
+ initializePolicyModule(_keyValueStore);
59
+ initializePoolModule(_keyValueStore);
60
+ initializeRiskModule(_keyValueStore);
53
61
  }
54
62
 
55
- // from registerable
56
- function getParentNftId() public pure override returns (NftId) {
57
- // TODO add self registry and exchange 0 for_registry.getNftId();
58
- // define parent tree for all registerables
59
- // eg 0 <- chain(mainnet) <- global registry <- chain registry <- instance <- component <- policy/bundle
60
- return toNftId(0);
61
- }
63
+ function getRegistry() public view override (Registerable, IPolicyModule) returns (IRegistry registry) { return super.getRegistry(); }
64
+ function getKeyValueStore() public view override (InstanceBase) returns (IKeyValueStore keyValueStore) { return super.getKeyValueStore(); }
62
65
 
63
- // from registerable
64
- function getType() external pure override returns (ObjectType objectType) {
65
- return INSTANCE();
66
- }
66
+ function getComponentOwnerService() external view override (IComponentModule, IInstanceBase) returns(IComponentOwnerService service) { return _componentOwnerService; }
67
+ function getProductService() external view override (IBundleModule, IPolicyModule, IInstanceBase) returns(IProductService service) { return _productService; }
68
+ function getPoolService() external view override (IBundleModule, IPoolModule, IInstanceBase) returns(IPoolService service) { return _poolService; }
67
69
 
68
- // from registerable
69
- function getData() external pure override returns (bytes memory data) {
70
- return bytes(abi.encode(0));
71
- }
70
+ function getOwner() public view override (IAccessModule, Registerable) returns(address owner) { return super.getOwner(); }
72
71
  }
@@ -0,0 +1,42 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRegistry} from "../../registry/IRegistry.sol";
5
+ import {IInstance} from "../../instance/IInstance.sol";
6
+ import {ObjectType, INSTANCE, PRODUCT, POOL} from "../../types/ObjectType.sol";
7
+ import {NftId, NftIdLib} from "../../types/NftId.sol";
8
+
9
+ import {ServiceBase} from "./ServiceBase.sol";
10
+
11
+ abstract contract ComponentServiceBase is ServiceBase {
12
+
13
+ constructor(
14
+ address registry,
15
+ NftId registryNftId
16
+ )
17
+ ServiceBase(registry, registryNftId)
18
+ // solhint-disable-next-line no-empty-blocks
19
+ {
20
+ }
21
+
22
+
23
+ function _getAndVerifyComponentInfoAndInstance(
24
+ ObjectType objectType
25
+ )
26
+ internal
27
+ view
28
+ returns(
29
+ IRegistry.ObjectInfo memory info,
30
+ IInstance instance
31
+ )
32
+ {
33
+ NftId componentNftId = _registry.getNftId(msg.sender);
34
+ require(componentNftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
35
+
36
+ info = _registry.getObjectInfo(componentNftId);
37
+ require(info.objectType == objectType, "OBJECT_TYPE_INVALID");
38
+
39
+ address instanceAddress = _registry.getObjectInfo(info.parentNftId).objectAddress;
40
+ instance = IInstance(instanceAddress);
41
+ }
42
+ }
@@ -0,0 +1,19 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Key32} from "../../types/Key32.sol";
5
+ import {StateId} from "../../types/StateId.sol";
6
+
7
+ import {IKeyValueStore} from "./IKeyValueStore.sol";
8
+ import {IComponentOwnerService} from "../service/IComponentOwnerService.sol";
9
+ import {IProductService} from "../service/IProductService.sol";
10
+ import {IPoolService} from "../service/IPoolService.sol";
11
+
12
+ interface IInstanceBase {
13
+ function getKeyValueStore() external view returns (IKeyValueStore keyValueStore);
14
+ function updateState(Key32 key, StateId state) external;
15
+
16
+ function getComponentOwnerService() external view returns(IComponentOwnerService service);
17
+ function getProductService() external view returns(IProductService service);
18
+ function getPoolService() external view returns(IPoolService service);
19
+ }