@etherisc/gif-next 0.0.2-eb7397c → 0.0.2-ec436bf-674

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 (390) hide show
  1. package/README.md +301 -7
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → components/BaseComponent.sol/BaseComponent.json} +156 -156
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +618 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/component/IComponent.sol/IComponentModule.json → components/IBaseComponent.sol/IBaseComponent.json} +139 -104
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +249 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +157 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +606 -37
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +590 -46
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  26. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  28. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  30. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  32. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
  39. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
  40. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
  41. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
  42. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
  43. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
  44. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
  45. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
  46. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
  47. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
  48. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  49. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  50. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  51. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  52. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  53. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  54. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  55. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
  56. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  57. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  58. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +502 -641
  60. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
  62. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/Instance.sol/Instance.json +3043 -571
  64. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1388 -0
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +891 -0
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +492 -0
  72. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +540 -0
  74. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  76. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  78. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  80. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
  82. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  84. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  87. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  88. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  89. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  90. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  92. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  94. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  95. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/ISetup.sol/ISetup.json} +2 -2
  96. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  97. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +10 -0
  98. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +827 -0
  100. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +716 -0
  102. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +448 -0
  104. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +466 -0
  106. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +446 -0
  108. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +561 -0
  110. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +751 -0
  112. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +855 -0
  114. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +460 -0
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +239 -2
  118. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +537 -63
  120. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  121. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +853 -0
  122. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  123. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  124. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  125. package/artifacts/contracts/registry/Registry.sol/Registry.json +676 -76
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1237 -0
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +525 -0
  130. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  131. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  132. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  133. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  134. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  135. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  136. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  137. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  138. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  139. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +201 -0
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  141. package/artifacts/contracts/shared/IService.sol/IService.json +421 -0
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  146. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  148. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +274 -0
  150. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  151. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
  152. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  153. package/artifacts/contracts/shared/Service.sol/Service.json +468 -0
  154. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  156. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  158. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +228 -0
  160. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  162. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +305 -0
  164. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  166. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  167. package/artifacts/contracts/test/TestService.sol/TestService.json +600 -0
  168. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  169. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  170. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  171. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  172. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  173. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +286 -0
  174. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  175. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  176. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  177. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  178. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  180. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  182. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  184. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  186. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  187. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  188. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  190. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  191. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
  192. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  194. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  196. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  198. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  200. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  202. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  204. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +77 -2
  206. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  208. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  210. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  212. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  213. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  214. package/contracts/components/BaseComponent.sol +91 -0
  215. package/contracts/components/Distribution.sol +160 -0
  216. package/contracts/components/IBaseComponent.sol +25 -0
  217. package/contracts/components/IDistributionComponent.sol +44 -0
  218. package/contracts/components/IPoolComponent.sol +62 -0
  219. package/contracts/components/IProductComponent.sol +35 -0
  220. package/contracts/components/Pool.sol +232 -18
  221. package/contracts/components/Product.sol +267 -36
  222. package/contracts/experiment/cloning/Cloner.sol +47 -0
  223. package/contracts/experiment/errors/Require.sol +10 -5
  224. package/contracts/experiment/errors/Revert.sol +13 -8
  225. package/contracts/experiment/inheritance/A.sol +8 -11
  226. package/contracts/experiment/inheritance/B.sol +10 -5
  227. package/contracts/experiment/inheritance/C.sol +11 -5
  228. package/contracts/experiment/inheritance/IA.sol +2 -7
  229. package/contracts/experiment/inheritance/IB.sol +3 -2
  230. package/contracts/experiment/inheritance/IC.sol +4 -3
  231. package/contracts/experiment/statemachine/Dummy.sol +27 -0
  232. package/contracts/experiment/statemachine/ISM.sol +25 -0
  233. package/contracts/experiment/statemachine/SM.sol +57 -0
  234. package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
  235. package/contracts/experiment/types/TypeA.sol +14 -9
  236. package/contracts/experiment/types/TypeB.sol +14 -9
  237. package/contracts/instance/AccessManagedSimple.sol +115 -0
  238. package/contracts/instance/AccessManagerSimple.sol +692 -0
  239. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  240. package/contracts/instance/IInstance.sol +34 -15
  241. package/contracts/instance/IInstanceService.sol +30 -0
  242. package/contracts/instance/Instance.sol +423 -44
  243. package/contracts/instance/InstanceAccessManager.sol +288 -0
  244. package/contracts/instance/InstanceReader.sol +306 -0
  245. package/contracts/instance/InstanceService.sol +182 -0
  246. package/contracts/instance/InstanceServiceManager.sol +56 -0
  247. package/contracts/instance/base/ComponentServiceBase.sol +118 -0
  248. package/contracts/instance/base/IInstanceBase.sol +23 -0
  249. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  250. package/contracts/instance/base/ILifecycle.sol +30 -0
  251. package/contracts/instance/base/KeyValueStore.sol +172 -0
  252. package/contracts/instance/base/Lifecycle.sol +100 -0
  253. package/contracts/instance/module/IAccess.sol +38 -0
  254. package/contracts/instance/module/IBundle.sol +20 -0
  255. package/contracts/instance/module/IDistribution.sol +39 -0
  256. package/contracts/instance/module/IPolicy.sol +45 -0
  257. package/contracts/instance/module/IRisk.sol +11 -0
  258. package/contracts/instance/module/ISetup.sol +44 -0
  259. package/contracts/instance/module/ITreasury.sol +23 -0
  260. package/contracts/instance/service/ComponentOwnerService.sol +317 -0
  261. package/contracts/instance/service/DistributionService.sol +87 -0
  262. package/contracts/instance/service/DistributionServiceManager.sol +53 -0
  263. package/contracts/instance/service/IComponentOwnerService.sol +20 -0
  264. package/contracts/instance/service/IDistributionService.sol +12 -0
  265. package/contracts/instance/service/IPoolService.sol +37 -0
  266. package/contracts/instance/service/IProductService.sol +107 -0
  267. package/contracts/instance/service/PoolService.sol +193 -0
  268. package/contracts/instance/service/PoolServiceManager.sol +53 -0
  269. package/contracts/registry/ChainNft.sol +138 -109
  270. package/contracts/registry/IRegistry.sol +81 -57
  271. package/contracts/registry/IRegistryService.sol +33 -0
  272. package/contracts/registry/ITransferInterceptor.sol +6 -0
  273. package/contracts/registry/Registry.sol +427 -120
  274. package/contracts/registry/RegistryService.sol +399 -0
  275. package/contracts/registry/RegistryServiceManager.sol +80 -0
  276. package/contracts/registry/TokenRegistry.sol +111 -0
  277. package/contracts/shared/ContractDeployerLib.sol +72 -0
  278. package/contracts/shared/ERC165.sol +25 -0
  279. package/contracts/shared/INftOwnable.sol +22 -0
  280. package/contracts/shared/IRegisterable.sol +17 -0
  281. package/contracts/shared/IService.sol +15 -0
  282. package/contracts/shared/IVersionable.sol +96 -0
  283. package/contracts/shared/NftOwnable.sol +136 -0
  284. package/contracts/shared/ProxyManager.sol +94 -0
  285. package/contracts/shared/Registerable.sol +90 -0
  286. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  287. package/contracts/shared/Service.sol +55 -0
  288. package/contracts/shared/TokenHandler.sol +27 -0
  289. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  290. package/contracts/shared/Versionable.sol +147 -0
  291. package/contracts/test/TestFee.sol +25 -0
  292. package/contracts/test/TestRegisterable.sol +18 -0
  293. package/contracts/test/TestRoleId.sol +14 -0
  294. package/contracts/test/TestService.sol +24 -0
  295. package/contracts/test/TestToken.sol +26 -0
  296. package/contracts/test/TestVersion.sol +44 -0
  297. package/contracts/test/TestVersionable.sol +17 -0
  298. package/contracts/test/Usdc.sol +26 -0
  299. package/contracts/types/AddressSet.sol +58 -0
  300. package/contracts/types/Blocknumber.sol +76 -18
  301. package/contracts/types/ChainId.sol +18 -10
  302. package/contracts/types/DistributorType.sol +55 -0
  303. package/contracts/types/Fee.sol +56 -0
  304. package/contracts/types/Key32.sol +50 -0
  305. package/contracts/types/NftId.sol +48 -11
  306. package/contracts/types/NftIdSet.sol +60 -0
  307. package/contracts/types/NumberId.sol +52 -0
  308. package/contracts/types/ObjectType.sol +152 -0
  309. package/contracts/types/Referral.sol +85 -0
  310. package/contracts/types/RiskId.sol +43 -0
  311. package/contracts/types/RoleId.sol +89 -0
  312. package/contracts/types/StateId.sol +105 -0
  313. package/contracts/types/Timestamp.sol +89 -17
  314. package/contracts/types/UFixed.sol +193 -75
  315. package/contracts/types/Version.sol +107 -0
  316. package/package.json +21 -6
  317. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  318. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  319. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  320. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  321. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  322. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  323. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  324. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  325. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  326. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  327. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  328. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  329. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  330. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  331. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  332. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  333. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  334. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  335. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  336. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  337. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  338. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  339. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  340. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  341. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  342. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  343. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  344. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  345. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  346. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  347. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  348. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  349. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  350. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  351. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  352. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  353. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  354. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  355. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  356. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  357. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  358. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  359. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  360. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  361. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  362. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  363. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  364. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  365. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  366. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  367. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  368. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  369. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  370. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  371. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  372. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  373. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  374. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  375. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  376. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -440
  377. package/contracts/components/Component.sol +0 -62
  378. package/contracts/components/IPool.sol +0 -9
  379. package/contracts/components/IProduct.sol +0 -12
  380. package/contracts/instance/access/Access.sol +0 -218
  381. package/contracts/instance/access/IAccess.sol +0 -83
  382. package/contracts/instance/component/ComponentModule.sol +0 -248
  383. package/contracts/instance/component/IComponent.sol +0 -95
  384. package/contracts/instance/policy/IPolicy.sol +0 -66
  385. package/contracts/instance/policy/PolicyModule.sol +0 -107
  386. package/contracts/instance/pool/IPoolModule.sol +0 -41
  387. package/contracts/instance/pool/PoolModule.sol +0 -86
  388. package/contracts/instance/product/IProductService.sol +0 -46
  389. package/contracts/instance/product/ProductService.sol +0 -108
  390. package/contracts/registry/IChainNft.sol +0 -18
@@ -1,218 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- // role admin handling of oz doesn't fit nft ownability
5
- // import {AccessControlEnumerable} from "@openzeppelin/contracts/access/AccessControlEnumerable.sol";
6
- import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
7
-
8
- import {IAccessModule} from "./IAccess.sol";
9
-
10
-
11
- abstract contract AccessModule is
12
- IAccessModule
13
- {
14
- string constant public PRODUCT_OWNER = "ProductOwner";
15
- string constant public ORACLE_OWNER = "OracleOwner";
16
- string constant public POOL_OWNER = "PoolOwner";
17
-
18
- using EnumerableSet for EnumerableSet.AddressSet;
19
-
20
- event LogAccessRoleGranted(bytes32 role, address member, bool isMember);
21
-
22
- mapping(bytes32 role => RoleInfo info) private _info;
23
- bytes32 [] private _roles;
24
-
25
- bytes32 private immutable _productOwnerRole;
26
- bytes32 private immutable _oracleOwnerRole;
27
- bytes32 private immutable _poolOwnerRole;
28
-
29
- mapping(bytes32 role => mapping(address member => bool isMember)) private _isRoleMember;
30
- mapping(bytes32 role => EnumerableSet.AddressSet) private _roleMembers;
31
-
32
- modifier onlyOwner() {
33
- require(msg.sender == this.getOwner(), "ERROR:ACM-001:NOT_OWNER");
34
- _;
35
- }
36
-
37
- constructor() {
38
- _productOwnerRole = _createRole(PRODUCT_OWNER);
39
- _oracleOwnerRole = _createRole(ORACLE_OWNER);
40
- _poolOwnerRole = _createRole(POOL_OWNER);
41
- }
42
-
43
- function PRODUCT_OWNER_ROLE() public view override returns(bytes32 role) { return _productOwnerRole; }
44
- function ORACLE_OWNER_ROLE() public view override returns(bytes32 role) { return _oracleOwnerRole; }
45
- function POOL_OWNER_ROLE() public view override returns(bytes32 role) { return _poolOwnerRole; }
46
-
47
-
48
- function createRole(string memory roleName)
49
- external
50
- override
51
- onlyOwner
52
- returns(bytes32 role)
53
- {
54
- return _createRole(roleName);
55
- }
56
-
57
- function _createRole(string memory roleName)
58
- internal
59
- returns(bytes32 role)
60
- {
61
- RoleInfo memory info = RoleInfo(
62
- 0,
63
- roleName,
64
- true
65
- );
66
-
67
- role = _setRoleInfo(info);
68
-
69
-
70
- }
71
-
72
- // TODO move to module
73
- function disableRole(bytes32 role)
74
- external
75
- override
76
- onlyOwner
77
- {
78
- RoleInfo memory info = _info[role];
79
- require(info.id == role, "ERROR:AOS-001:ROLE_DOES_NOT_EXIST");
80
-
81
- info.isActive = false;
82
- _setRoleInfo(info);
83
-
84
-
85
- }
86
-
87
- // TODO move to module
88
- function enableRole(bytes32 role)
89
- external
90
- override
91
- onlyOwner
92
- {
93
- RoleInfo memory info = _info[role];
94
- require(info.id == role, "ERROR:AOS-002:ROLE_DOES_NOT_EXIST");
95
-
96
- info.isActive = true;
97
- _setRoleInfo(info);
98
-
99
-
100
- }
101
-
102
- function grantRole(bytes32 role, address member)
103
- external
104
- override
105
- onlyOwner
106
- {
107
- require(_info[role].id == role, "ERROR:ACM-010:ROLE_NOT_EXISTING");
108
- require(_info[role].isActive, "ERROR:ACM-011:ROLE_NOT_ACTIVE");
109
-
110
- _isRoleMember[role][member] = true;
111
- _roleMembers[role].add(member);
112
-
113
- emit LogAccessRoleGranted(role, member, _isRoleMember[role][member]);
114
- }
115
-
116
-
117
- function revokeRole(bytes32 role, address member)
118
- external
119
- override
120
- onlyOwner
121
- {
122
- require(_info[role].id == role, "ERROR:ACM-020:ROLE_NOT_EXISTING");
123
-
124
- _isRoleMember[role][member] = false;
125
- _roleMembers[role].remove(member);
126
-
127
-
128
- }
129
-
130
-
131
- function hasRole(bytes32 role, address member)
132
- external
133
- view
134
- override
135
- returns(bool)
136
- {
137
- return _isRoleMember[role][member];
138
- }
139
-
140
-
141
- function getRoleInfo(bytes32 role)
142
- external
143
- override
144
- view
145
- returns(RoleInfo memory info)
146
- {
147
- return _info[role];
148
- }
149
-
150
-
151
- function getRole(uint256 idx)
152
- external
153
- override
154
- view
155
- returns(bytes32 role)
156
- {
157
- return _roles[idx];
158
- }
159
-
160
-
161
- function getRoleCount()
162
- external
163
- override
164
- view
165
- returns(uint256 roles)
166
- {
167
- return _roles.length;
168
- }
169
-
170
- function getRoleMemberCount(bytes32 role)
171
- public
172
- override
173
- view
174
- returns(uint256 roleMembers)
175
- {
176
- return _roleMembers[role].length();
177
- }
178
-
179
- function getRoleMember(bytes32 role, uint256 idx)
180
- public
181
- override
182
- view
183
- returns(address roleMembers)
184
- {
185
- return _roleMembers[role].at(idx);
186
- }
187
-
188
- function getRoleForName(string memory roleName)
189
- public
190
- override
191
- pure
192
- returns(bytes32 role)
193
- {
194
- return keccak256(abi.encode(roleName));
195
- }
196
-
197
-
198
- function _setRoleInfo(RoleInfo memory info)
199
- internal
200
- returns(bytes32 role)
201
- {
202
- role = info.id;
203
-
204
- if(role == bytes32(0)) {
205
- role = getRoleForName(info.name);
206
- // TODO check that this is a new role id
207
-
208
- info.id = role;
209
- _roles.push(role);
210
-
211
-
212
- }
213
-
214
- _info[role] = info;
215
-
216
-
217
- }
218
- }
@@ -1,83 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistryLinked} from "../../registry/IRegistry.sol";
5
-
6
- interface IAccess {
7
-
8
- struct RoleInfo {
9
- bytes32 id;
10
- string name;
11
- bool isActive;
12
- }
13
- }
14
-
15
- interface IAccessCheckRole {
16
-
17
- function hasRole(bytes32 role, address member)
18
- external
19
- view
20
- returns(bool);
21
- }
22
-
23
- interface IAccessComponentTypeRoles {
24
- function PRODUCT_OWNER_ROLE() external view returns(bytes32 role);
25
- function ORACLE_OWNER_ROLE() external view returns(bytes32 role);
26
- function POOL_OWNER_ROLE() external view returns(bytes32 role);
27
- }
28
-
29
-
30
- interface IAccessModule is
31
- IOwnable,
32
- IRegistryLinked,
33
- IAccess,
34
- IAccessComponentTypeRoles,
35
- IAccessCheckRole
36
- {
37
-
38
- function createRole(string memory roleName)
39
- external
40
- returns(bytes32 role);
41
-
42
- function enableRole(bytes32 role)
43
- external;
44
-
45
- function disableRole(bytes32 role)
46
- external;
47
-
48
- function grantRole(bytes32 role, address member)
49
- external;
50
-
51
- function revokeRole(bytes32 role, address member)
52
- external;
53
-
54
- function getRole(uint256 idx)
55
- external
56
- view
57
- returns(bytes32 role);
58
-
59
- function getRoleInfo(bytes32 role)
60
- external
61
- view
62
- returns(RoleInfo memory info);
63
-
64
- function getRoleForName(string memory roleName)
65
- external
66
- pure
67
- returns(bytes32 role);
68
-
69
- function getRoleCount()
70
- external
71
- view
72
- returns(uint256 roles);
73
-
74
- function getRoleMemberCount(bytes32 role)
75
- external
76
- view
77
- returns(uint256 roleMembers);
78
-
79
- function getRoleMember(bytes32 role, uint256 idx)
80
- external
81
- view
82
- returns(address roleMembers);
83
- }
@@ -1,248 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {RegistryLinked} from "../../registry/Registry.sol";
5
- import {IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
6
- import {IAccessComponentTypeRoles, IAccessCheckRole} from "../access/IAccess.sol";
7
- import {IInstance} from "../IInstance.sol";
8
-
9
- import {IComponent, IComponentContract, IComponentModule, IComponentOwnerService} from "./IComponent.sol";
10
- import {IProductComponent} from "../../components/IProduct.sol";
11
- import {IPoolModule} from "../pool/IPoolModule.sol";
12
- import {NftId, NftIdLib} from "../../types/NftId.sol";
13
-
14
- abstract contract ComponentModule is
15
- IRegistryLinked,
16
- IAccessComponentTypeRoles,
17
- IAccessCheckRole,
18
- IComponentModule
19
- {
20
- using NftIdLib for NftId;
21
-
22
- mapping(NftId nftId => ComponentInfo info) private _componentInfo;
23
- mapping(NftId nftId => NftId poolNftId) private _poolNftIdForProduct;
24
- mapping(address cAddress => NftId nftId) private _nftIdByAddress;
25
- NftId[] private _nftIds;
26
-
27
- mapping(uint256 cType => bytes32 role) private _componentOwnerRole;
28
-
29
- IComponentOwnerService private _componentOwnerService;
30
-
31
- modifier onlyComponentOwnerService() {
32
- require(address(_componentOwnerService) == msg.sender, "ERROR:CMP-001:NOT_OWNER_SERVICE");
33
- _;
34
- }
35
-
36
- constructor(address componentOwnerService) {
37
- _componentOwnerService = ComponentOwnerService(componentOwnerService);
38
- }
39
-
40
- function registerComponent(IComponentContract component)
41
- external
42
- override
43
- onlyComponentOwnerService
44
- returns(NftId nftId)
45
- {
46
- bytes32 typeRole = getRoleForType(component.getType());
47
- require(
48
- this.hasRole(typeRole, component.getInitialOwner()),
49
- "ERROR:CMP-004:TYPE_ROLE_MISSING");
50
-
51
- nftId = this.getRegistry().register(address(component));
52
-
53
- _componentInfo[nftId] = ComponentInfo(
54
- nftId,
55
- CState.Active);
56
-
57
- // special case product -> persist product - pool assignment
58
- if(component.getType() == this.getRegistry().PRODUCT()) {
59
- IProductComponent product = IProductComponent(address(component));
60
- NftId poolNftId = product.getPoolNftId();
61
- require(poolNftId.gtz(), "ERROR:CMP-005:POOL_UNKNOWN");
62
- // add more validation (type, token, ...)
63
-
64
- _poolNftIdForProduct[nftId] = poolNftId;
65
-
66
- // add creation of productInfo
67
- }
68
- else if(component.getType() == this.getRegistry().POOL()) {
69
- IPoolModule poolModule = IPoolModule(address(this));
70
- poolModule.createPoolInfo(
71
- nftId,
72
- address(component), // set pool as its wallet
73
- address(0) // don't deal with token yet
74
- );
75
- }
76
-
77
- _nftIdByAddress[address(component)] = nftId;
78
- _nftIds.push(nftId);
79
-
80
- // add logging
81
- }
82
-
83
- function getPoolNftId(NftId productNftId)
84
- external
85
- view
86
- override
87
- returns(NftId poolNftId)
88
- {
89
- poolNftId = _poolNftIdForProduct[productNftId];
90
- }
91
-
92
-
93
- function getComponentOwnerService()
94
- external
95
- override
96
- view
97
- returns(IComponentOwnerService)
98
- {
99
- return _componentOwnerService;
100
- }
101
-
102
- function setComponentInfo(ComponentInfo memory info)
103
- external
104
- onlyComponentOwnerService
105
- returns(NftId nftId)
106
- {
107
- nftId = info.nftId;
108
- require(
109
- nftId.gtz() && _componentInfo[nftId].nftId.eq(nftId),
110
- "ERROR:CMP-006:COMPONENT_UNKNOWN");
111
-
112
- _componentInfo[nftId] = info;
113
-
114
- // add logging
115
- }
116
-
117
- function getComponentInfo(NftId nftId)
118
- external
119
- override
120
- view
121
- returns(ComponentInfo memory)
122
- {
123
- return _componentInfo[nftId];
124
- }
125
-
126
- function getComponentOwner(NftId nftId)
127
- external
128
- view
129
- returns(address owner)
130
- {
131
-
132
- }
133
-
134
- function getComponentId(address componentAddress)
135
- external
136
- view
137
- returns(NftId componentNftId)
138
- {
139
- return _nftIdByAddress[componentAddress];
140
- }
141
-
142
-
143
- function getComponentId(uint256 idx)
144
- external
145
- override
146
- view
147
- returns(NftId componentNftId)
148
- {
149
- return _nftIds[idx];
150
- }
151
-
152
-
153
- function components()
154
- external
155
- override
156
- view
157
- returns(uint256 numberOfCompnents)
158
- {
159
- return _nftIds.length;
160
- }
161
-
162
- function getRoleForType(uint256 cType)
163
- public
164
- view
165
- returns(bytes32 role)
166
- {
167
- if(cType == this.getRegistry().PRODUCT()) {
168
- return this.PRODUCT_OWNER_ROLE();
169
- }
170
- if(cType == this.getRegistry().POOL()) {
171
- return this.POOL_OWNER_ROLE();
172
- }
173
- if(cType == this.getRegistry().ORACLE()) {
174
- return this.ORACLE_OWNER_ROLE();
175
- }
176
-
177
- }
178
- }
179
-
180
-
181
- // this is actually the component owner service
182
- contract ComponentOwnerService is
183
- RegistryLinked,
184
- IComponent,
185
- IComponentOwnerService
186
- {
187
- using NftIdLib for NftId;
188
-
189
- modifier onlyComponentOwner(IComponentContract component) {
190
- NftId nftId = _registry.getNftId(address(component));
191
- require(
192
- nftId.gtz(),
193
- "ERROR:COS-001:COMPONENT_UNKNOWN");
194
- require(
195
- msg.sender == _registry.getOwner(nftId),
196
- "ERROR:COS-002:NOT_OWNER"
197
- );
198
- _;
199
- }
200
-
201
- constructor(address registry)
202
- RegistryLinked(registry)
203
- { }
204
-
205
- function register(IComponentContract component)
206
- external
207
- override
208
- returns(NftId nftId)
209
- {
210
- require(
211
- msg.sender == component.getInitialOwner(),
212
- "ERROR:COS-003:NOT_OWNER");
213
-
214
- IInstance instance = component.getInstance();
215
- nftId = instance.registerComponent(component);
216
- }
217
-
218
-
219
- function lock(IComponentContract component)
220
- external
221
- override
222
- onlyComponentOwner(component)
223
- {
224
- IInstance instance = component.getInstance();
225
- ComponentInfo memory info = instance.getComponentInfo(component.getNftId());
226
- require(info.nftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
227
- // TODO add state change validation
228
-
229
- info.state = CState.Locked;
230
- instance.setComponentInfo(info);
231
- }
232
-
233
-
234
- function unlock(IComponentContract component)
235
- external
236
- override
237
- onlyComponentOwner(component)
238
- {
239
- IInstance instance = component.getInstance();
240
- ComponentInfo memory info = instance.getComponentInfo(component.getNftId());
241
- require(info.nftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
242
- // TODO state change validation
243
-
244
- info.state = CState.Active;
245
- instance.setComponentInfo(info);
246
- }
247
-
248
- }
@@ -1,95 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
-
5
- import {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
6
- import {IInstance} from "../IInstance.sol";
7
- import {NftId} from "../../types/NftId.sol";
8
-
9
- interface IComponent {
10
-
11
- // TODO decide if enum or uints with constants (as in IRegistry.PRODUCT())
12
- enum CState {
13
- Undefined,
14
- Active,
15
- Locked
16
- }
17
-
18
- // component dynamic info (static info kept in registry)
19
- struct ComponentInfo {
20
- NftId nftId;
21
- CState state;
22
- }
23
- }
24
-
25
-
26
- interface IInstanceLinked {
27
- // function setInstance(address instance) external;
28
- function getInstance() external view returns(IInstance instance);
29
- }
30
-
31
-
32
- interface IComponentContract is
33
- IRegisterable,
34
- IInstanceLinked,
35
- IComponent
36
- { }
37
-
38
-
39
- interface IComponentOwnerService is IRegistryLinked{
40
-
41
- function register(IComponentContract component) external returns(NftId nftId);
42
- function lock(IComponentContract component) external;
43
- function unlock(IComponentContract component) external;
44
- }
45
-
46
-
47
- interface IComponentModule is
48
- IOwnable,
49
- IRegistryLinked,
50
- IComponent
51
- {
52
-
53
- function registerComponent(IComponentContract component)
54
- external
55
- returns(NftId nftId);
56
-
57
- function setComponentInfo(ComponentInfo memory info)
58
- external
59
- returns(NftId componentNftId);
60
-
61
- function getComponentInfo(NftId nftId)
62
- external
63
- view
64
- returns(ComponentInfo memory info);
65
-
66
- function getComponentOwner(NftId nftId)
67
- external
68
- view
69
- returns(address owner);
70
-
71
- function getComponentId(address componentAddress)
72
- external
73
- view
74
- returns(NftId nftId);
75
-
76
- function getComponentId(uint256 idx)
77
- external
78
- view
79
- returns(NftId nftId);
80
-
81
- function getPoolNftId(NftId productNftId)
82
- external
83
- view
84
- returns(NftId poolNftId);
85
-
86
- function components()
87
- external
88
- view
89
- returns(uint256 numberOfCompnents);
90
-
91
- function getComponentOwnerService()
92
- external
93
- view
94
- returns(IComponentOwnerService);
95
- }
@@ -1,66 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
-
5
- import {IOwnable, IRegistryLinked, IRegisterable, IRegistry} from "../../registry/IRegistry.sol";
6
- import {IInstance} from "../IInstance.sol";
7
- import {IProductService} from "../product/IProductService.sol";
8
- import {NftId} from "../../types/NftId.sol";
9
-
10
- // TODO check if there is value to introuce IContract and let IPolicy derive from IContract
11
- interface IPolicy {
12
-
13
- enum PolicyState {
14
- Undefined,
15
- Applied,
16
- Rejected,
17
- Active,
18
- Closed
19
- }
20
-
21
- struct PolicyInfo {
22
- NftId nftId;
23
- PolicyState state; // applied, withdrawn, rejected, active, closed
24
-
25
- uint256 sumInsuredAmount;
26
- uint256 premiumAmount;
27
- uint256 lifetime; // activatedAt + lifetime >= expiredAt
28
-
29
- uint256 createdAt;
30
- uint256 activatedAt; // time of underwriting
31
- uint256 expiredAt; // no new claims
32
- uint256 closedAt; // no locked capital
33
- }
34
- }
35
-
36
- interface IPolicyModule is
37
- IOwnable,
38
- IRegistryLinked,
39
- IPolicy
40
- {
41
-
42
- function createApplication(
43
- IRegistry.RegistryInfo memory productInfo,
44
- address applicationOwner,
45
- uint256 sumInsuredAmount,
46
- uint256 premiumAmount,
47
- uint256 lifetime,
48
- NftId bundleNftId
49
- )
50
- external
51
- returns(NftId nftId);
52
-
53
- function activate(NftId nftId)
54
- external;
55
-
56
- function getBundleNftForPolicy(NftId nftId)
57
- external
58
- view
59
- returns(NftId bundleNft);
60
-
61
- function getPolicyInfo(NftId nftId)
62
- external
63
- view
64
- returns(PolicyInfo memory info);
65
-
66
- }