@etherisc/gif-next 0.0.2-f99f1d2-109 → 0.0.2-fc8b370-882

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