@etherisc/gif-next 0.0.2-dc7e4cb-141 → 0.0.2-dd8c542-531

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 (422) hide show
  1. package/README.md +242 -11
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +302 -23
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +744 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +217 -23
  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 +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +90 -171
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +55 -177
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +615 -63
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +620 -70
  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/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  44. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  45. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  46. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  47. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -0
  48. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  49. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  50. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  51. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  52. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +909 -1202
  54. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  55. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +496 -0
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +2487 -1191
  60. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +940 -0
  62. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +572 -122
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1066 -0
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +560 -0
  70. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  71. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
  72. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +521 -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/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  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/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  88. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  89. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IDistribution.sol/IDistribution.json} +2 -2
  90. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  91. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  92. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  93. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  94. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/{pool/IPoolModule.sol/IPool.json → 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/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  98. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +923 -0
  100. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +440 -0
  102. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +400 -77
  104. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +671 -0
  106. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +428 -0
  108. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +669 -0
  110. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  111. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +185 -83
  112. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/{ComponentServiceBase.sol/ComponentServiceBase.json → IDistributionService.sol/IDistributionService.json} +212 -66
  114. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +664 -0
  116. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  117. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +200 -77
  118. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  119. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +209 -150
  120. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  121. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +971 -0
  122. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +464 -0
  124. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  125. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +325 -91
  126. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +428 -0
  128. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  129. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +312 -230
  130. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +420 -0
  132. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  133. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  134. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  135. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +309 -41
  136. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  137. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +886 -0
  138. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  139. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  140. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  141. package/artifacts/contracts/registry/Registry.sol/Registry.json +385 -129
  142. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  143. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1195 -0
  144. package/artifacts/contracts/registry/RegistryServiceAccessManager.sol/RegistryServiceAccessManager.dbg.json +4 -0
  145. package/artifacts/contracts/registry/RegistryServiceAccessManager.sol/RegistryServiceAccessManager.json +275 -0
  146. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +451 -0
  148. package/artifacts/contracts/registry/RegistryServiceReleaseManager.sol/RegistryServiceReleaseManager.dbg.json +4 -0
  149. package/artifacts/contracts/registry/RegistryServiceReleaseManager.sol/RegistryServiceReleaseManager.json +521 -0
  150. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  151. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +397 -0
  152. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  154. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  155. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  156. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  157. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  158. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  159. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  160. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  161. package/artifacts/contracts/{instance/service → shared}/IService.sol/IService.json +183 -62
  162. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  163. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
  164. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  165. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  166. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  167. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  168. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  170. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  171. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
  172. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  173. package/artifacts/contracts/{instance/service/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +224 -56
  174. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  175. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  176. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  177. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  178. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
  180. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  181. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  182. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  183. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  184. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  185. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +44 -10
  186. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  187. package/artifacts/contracts/test/TestService.sol/TestService.json +289 -68
  188. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  189. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  190. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  191. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  192. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  193. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +103 -23
  194. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  195. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  196. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  197. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  200. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  201. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/Fee.sol/FeeLib.json +52 -13
  203. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  204. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  205. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  207. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  208. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  209. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  210. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  211. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  213. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  214. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  215. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  216. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  217. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  218. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  219. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  220. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  221. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  222. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  223. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  224. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  225. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  226. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  227. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  228. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  229. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  230. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  231. package/contracts/components/BaseComponent.sol +75 -32
  232. package/contracts/components/Distribution.sol +163 -0
  233. package/contracts/components/IBaseComponent.sol +15 -3
  234. package/contracts/components/IDistributionComponent.sol +44 -0
  235. package/contracts/components/IPoolComponent.sol +19 -10
  236. package/contracts/components/IProductComponent.sol +25 -9
  237. package/contracts/components/Pool.sol +132 -35
  238. package/contracts/components/Product.sol +211 -36
  239. package/contracts/experiment/cloning/Cloner.sol +47 -0
  240. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
  241. package/contracts/instance/BundleManager.sol +129 -0
  242. package/contracts/instance/Cloneable.sol +46 -0
  243. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  244. package/contracts/instance/IInstance.sol +53 -46
  245. package/contracts/instance/IInstanceBase.sol +26 -0
  246. package/contracts/instance/IInstanceService.sol +34 -0
  247. package/contracts/instance/Instance.sol +447 -49
  248. package/contracts/instance/InstanceAccessManager.sol +288 -0
  249. package/contracts/instance/InstanceBase.sol +33 -63
  250. package/contracts/instance/InstanceReader.sol +315 -0
  251. package/contracts/instance/InstanceService.sol +299 -0
  252. package/contracts/instance/InstanceServiceManager.sol +58 -0
  253. package/contracts/instance/ObjectManager.sol +101 -0
  254. package/contracts/instance/base/ComponentServiceBase.sol +72 -0
  255. package/contracts/instance/base/IInstanceBase.sol +23 -0
  256. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  257. package/contracts/instance/base/ILifecycle.sol +30 -0
  258. package/contracts/instance/base/KeyValueStore.sol +172 -0
  259. package/contracts/instance/{module/lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +51 -40
  260. package/contracts/instance/module/IAccess.sol +38 -0
  261. package/contracts/instance/module/IBundle.sol +20 -0
  262. package/contracts/instance/module/IDistribution.sol +39 -0
  263. package/contracts/instance/module/IPolicy.sol +45 -0
  264. package/contracts/instance/module/IRisk.sol +11 -0
  265. package/contracts/instance/module/ISetup.sol +46 -0
  266. package/contracts/instance/module/ITreasury.sol +23 -0
  267. package/contracts/instance/service/BundleService.sol +260 -0
  268. package/contracts/instance/service/BundleServiceManager.sol +55 -0
  269. package/contracts/instance/service/ComponentOwnerService.sol +244 -100
  270. package/contracts/instance/service/DistributionService.sol +114 -0
  271. package/contracts/instance/service/DistributionServiceManager.sol +55 -0
  272. package/contracts/instance/service/IBundleService.sol +45 -0
  273. package/contracts/instance/service/IComponentOwnerService.sol +1 -3
  274. package/contracts/instance/service/IDistributionService.sol +12 -0
  275. package/contracts/instance/service/IPolicyService.sol +87 -0
  276. package/contracts/instance/service/IPoolService.sol +8 -18
  277. package/contracts/instance/service/IProductService.sol +21 -39
  278. package/contracts/instance/service/PolicyService.sol +503 -0
  279. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  280. package/contracts/instance/service/PoolService.sol +87 -88
  281. package/contracts/instance/service/PoolServiceManager.sol +55 -0
  282. package/contracts/instance/service/ProductService.sol +106 -293
  283. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  284. package/contracts/registry/ChainNft.sol +79 -36
  285. package/contracts/registry/IRegistry.sol +45 -25
  286. package/contracts/registry/IRegistryService.sol +54 -0
  287. package/contracts/registry/ITransferInterceptor.sol +6 -0
  288. package/contracts/registry/Registry.sol +292 -288
  289. package/contracts/registry/RegistryService.sol +330 -0
  290. package/contracts/registry/RegistryServiceAccessManager.sol +210 -0
  291. package/contracts/registry/RegistryServiceManager.sol +60 -0
  292. package/contracts/registry/RegistryServiceReleaseManager.sol +366 -0
  293. package/contracts/registry/TokenRegistry.sol +110 -0
  294. package/contracts/shared/ContractDeployerLib.sol +72 -0
  295. package/contracts/shared/ERC165.sol +6 -2
  296. package/contracts/shared/INftOwnable.sol +22 -0
  297. package/contracts/shared/IRegisterable.sol +8 -15
  298. package/contracts/shared/IService.sol +16 -0
  299. package/contracts/shared/IVersionable.sol +55 -11
  300. package/contracts/shared/NftOwnable.sol +134 -0
  301. package/contracts/shared/ProxyManager.sol +94 -0
  302. package/contracts/shared/Registerable.sol +63 -59
  303. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  304. package/contracts/shared/Service.sol +58 -0
  305. package/contracts/shared/TokenHandler.sol +27 -0
  306. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  307. package/contracts/shared/Versionable.sol +113 -55
  308. package/contracts/test/TestFee.sol +2 -2
  309. package/contracts/test/TestRegisterable.sol +5 -6
  310. package/contracts/test/TestRoleId.sol +2 -2
  311. package/contracts/test/TestService.sol +7 -14
  312. package/contracts/types/DistributorType.sol +55 -0
  313. package/contracts/types/Fee.sol +10 -5
  314. package/contracts/types/Key32.sol +50 -0
  315. package/contracts/types/NftId.sol +16 -1
  316. package/contracts/types/NftIdSet.sol +26 -24
  317. package/contracts/types/NumberId.sol +52 -0
  318. package/contracts/types/ObjectType.sol +51 -14
  319. package/contracts/types/Referral.sol +85 -0
  320. package/contracts/types/RiskId.sol +43 -0
  321. package/contracts/types/RoleId.sol +66 -11
  322. package/contracts/types/StateId.sol +12 -2
  323. package/contracts/types/Timestamp.sol +7 -3
  324. package/contracts/types/UFixed.sol +128 -12
  325. package/contracts/types/Version.sol +13 -1
  326. package/package.json +4 -3
  327. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  328. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  329. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  330. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  331. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  332. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  333. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  334. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  335. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  336. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  337. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -276
  338. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  339. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  340. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -276
  341. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  342. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  343. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  344. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  345. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  346. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  347. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  348. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  349. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  350. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  351. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  352. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  353. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  354. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  355. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  356. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  357. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  358. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  359. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  360. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  361. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  362. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  363. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  364. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  365. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  366. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  367. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  368. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  369. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  370. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  371. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  372. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  373. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  376. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  378. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  380. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  381. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  382. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  383. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  384. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  385. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  386. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  387. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  388. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  389. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  390. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  391. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  392. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  393. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  394. package/contracts/experiment/statemachine/README.md +0 -112
  395. package/contracts/instance/IInstanceLinked.sol +0 -8
  396. package/contracts/instance/IServiceLinked.sol +0 -12
  397. package/contracts/instance/module/access/Access.sol +0 -149
  398. package/contracts/instance/module/access/IAccess.sol +0 -53
  399. package/contracts/instance/module/bundle/BundleModule.sol +0 -228
  400. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  401. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  402. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  403. package/contracts/instance/module/component/ComponentModule.sol +0 -103
  404. package/contracts/instance/module/component/IComponent.sol +0 -53
  405. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  406. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  407. package/contracts/instance/module/policy/PolicyModule.sol +0 -84
  408. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  409. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  410. package/contracts/instance/module/risk/IRisk.sol +0 -10
  411. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  412. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  413. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  414. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  415. package/contracts/instance/service/ComponentServiceBase.sol +0 -41
  416. package/contracts/instance/service/IService.sol +0 -15
  417. package/contracts/instance/service/ServiceBase.sol +0 -39
  418. package/contracts/registry/IChainNft.sol +0 -21
  419. package/contracts/registry/IRegistryLinked.sol +0 -8
  420. package/contracts/shared/IOwnable.sol +0 -6
  421. package/contracts/test/TestPool.sol +0 -22
  422. package/contracts/test/TestProduct.sol +0 -44
@@ -0,0 +1,288 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
7
+ import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
8
+
9
+ import {IBundle} from "./module/IBundle.sol";
10
+ import {IPolicy} from "./module/IPolicy.sol";
11
+ import {IRisk} from "./module/IRisk.sol";
12
+ import {ISetup} from "./module/ISetup.sol";
13
+ import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
14
+ import {KeyValueStore} from "./base/KeyValueStore.sol";
15
+ import {NftId} from "../types/NftId.sol";
16
+ import {NumberId} from "../types/NumberId.sol";
17
+ import {ObjectType, BUNDLE, DISTRIBUTION, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
18
+ import {RiskId, RiskIdLib} from "../types/RiskId.sol";
19
+ import {RoleId, RoleIdLib} from "../types/RoleId.sol";
20
+ import {StateId, ACTIVE} from "../types/StateId.sol";
21
+ import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
22
+
23
+ contract InstanceAccessManager is
24
+ AccessManagedUpgradeable
25
+ {
26
+ string public constant ADMIN_ROLE_NAME = "AdminRole";
27
+ string public constant PUBLIC_ROLE_NAME = "PublicRole";
28
+
29
+ uint64 public constant CUSTOM_ROLE_ID_MIN = 10000;
30
+ uint32 public constant EXECUTION_DELAY = 0;
31
+
32
+ struct RoleInfo {
33
+ ShortString name;
34
+ bool isCustom;
35
+ bool isLocked;
36
+ Timestamp createdAt;
37
+ Timestamp updatedAt;
38
+ }
39
+
40
+ struct TargetInfo {
41
+ ShortString name;
42
+ bool isCustom;
43
+ bool isLocked;
44
+ Timestamp createdAt;
45
+ Timestamp updatedAt;
46
+ }
47
+
48
+ error ErrorRoleIdInvalid(RoleId roleId);
49
+ error ErrorRoleIdTooBig(RoleId roleId);
50
+ error ErrorRoleIdTooSmall(RoleId roleId);
51
+ error ErrorRoleIdAlreadyExists(RoleId roleId, ShortString name);
52
+ error ErrorRoleIdNotActive(RoleId roleId);
53
+ error ErrorRoleNameEmpty(RoleId roleId);
54
+ error ErrorRoleNameNotUnique(RoleId roleId, ShortString name);
55
+ error ErrorRoleInvalidUpdate(RoleId roleId, bool isCustom);
56
+ error ErrorRoleIsCustomIsImmutable(RoleId roleId, bool isCustom, bool isCustomExisting);
57
+ error ErrorSetLockedForNonexstentRole(RoleId roleId);
58
+ error ErrorGrantNonexstentRole(RoleId roleId);
59
+ error ErrorRevokeNonexstentRole(RoleId roleId);
60
+ error ErrorRenounceNonexstentRole(RoleId roleId);
61
+
62
+ error ErrorTargetAddressZero();
63
+ error ErrorTargetAlreadyExists(address target, ShortString name);
64
+ error ErrorTargetNameEmpty(address target);
65
+ error ErrorTargetNameExists(address target, address existingTarget, ShortString name);
66
+ error ErrorSetLockedForNonexstentTarget(address target);
67
+
68
+ // role specific state
69
+ mapping(RoleId roleId => RoleInfo info) internal _role;
70
+ mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
71
+ mapping(ShortString name => RoleId roleId) internal _roleForName;
72
+ RoleId [] internal _roles;
73
+
74
+ // target specific state
75
+ mapping(address target => TargetInfo info) internal _target;
76
+ mapping(ShortString name => address target) internal _targetForName;
77
+ address [] internal _targets;
78
+
79
+ AccessManagerUpgradeable internal _accessManager;
80
+
81
+ constructor(address accessManager)
82
+ {
83
+ _accessManager = AccessManagerUpgradeable(accessManager);
84
+ __AccessManaged_init(accessManager);
85
+
86
+ _createRole(RoleIdLib.toRoleId(_accessManager.ADMIN_ROLE()), ADMIN_ROLE_NAME, false, false);
87
+ _createRole(RoleIdLib.toRoleId(_accessManager.PUBLIC_ROLE()), PUBLIC_ROLE_NAME, false, false);
88
+ }
89
+
90
+ //--- Role ------------------------------------------------------//
91
+
92
+ function createDefaultRole(RoleId roleId, string memory name) external restricted() {
93
+ _createRole(roleId, name, false, true);
94
+ }
95
+
96
+ function createRole(RoleId roleId, string memory name) external restricted() {
97
+ _createRole(roleId, name, true, true);
98
+ }
99
+
100
+ function setRoleLocked(RoleId roleId, bool locked) external restricted() {
101
+ if (!roleExists(roleId)) {
102
+ revert ErrorSetLockedForNonexstentRole(roleId);
103
+ }
104
+
105
+ _role[roleId].isLocked = locked;
106
+ _role[roleId].updatedAt = TimestampLib.blockTimestamp();
107
+ }
108
+
109
+ function roleExists(RoleId roleId) public view returns (bool exists) {
110
+ return _role[roleId].createdAt.gtz();
111
+ }
112
+
113
+ function grantRole(RoleId roleId, address member) external restricted() returns (bool granted) {
114
+ if (!roleExists(roleId)) {
115
+ revert ErrorGrantNonexstentRole(roleId);
116
+ }
117
+
118
+ if (_role[roleId].isLocked) {
119
+ revert ErrorRoleIdNotActive(roleId);
120
+ }
121
+
122
+ if (!EnumerableSet.contains(_roleMembers[roleId], member)) {
123
+ _accessManager.grantRole(roleId.toInt(), member, EXECUTION_DELAY);
124
+ EnumerableSet.add(_roleMembers[roleId], member);
125
+ return true;
126
+ }
127
+
128
+ return false;
129
+ }
130
+
131
+ function revokeRole(RoleId roleId, address member) external restricted() returns (bool revoked) {
132
+ if (!roleExists(roleId)) {
133
+ revert ErrorRevokeNonexstentRole(roleId);
134
+ }
135
+
136
+ if (EnumerableSet.contains(_roleMembers[roleId], member)) {
137
+ _accessManager.revokeRole(roleId.toInt(), member);
138
+ EnumerableSet.remove(_roleMembers[roleId], member);
139
+ return true;
140
+ }
141
+
142
+ return false;
143
+ }
144
+
145
+ /// @dev not restricted function by intention
146
+ /// the restriction to role members is already enforced by the call to the access manger
147
+ function renounceRole(RoleId roleId) external returns (bool revoked) {
148
+ address member = msg.sender;
149
+
150
+ if (!roleExists(roleId)) {
151
+ revert ErrorRenounceNonexstentRole(roleId);
152
+ }
153
+
154
+ if (EnumerableSet.contains(_roleMembers[roleId], member)) {
155
+ // cannot use accessManger.renounce as it directly checks against msg.sender
156
+ _accessManager.revokeRole(roleId.toInt(), member);
157
+ EnumerableSet.remove(_roleMembers[roleId], member);
158
+ return true;
159
+ }
160
+
161
+ return false;
162
+ }
163
+
164
+ function roles() external view returns (uint256 numberOfRoles) {
165
+ return _roles.length;
166
+ }
167
+
168
+ function getRoleId(uint256 idx) external view returns (RoleId roleId) {
169
+ return _roles[idx];
170
+ }
171
+
172
+ function getRoleIdForName(string memory name) external view returns (RoleId roleId) {
173
+ return _roleForName[ShortStrings.toShortString(name)];
174
+ }
175
+
176
+ function getRole(RoleId roleId) external view returns (RoleInfo memory role) {
177
+ return _role[roleId];
178
+ }
179
+
180
+ function hasRole(RoleId roleId, address account) external view returns (bool accountHasRole) {
181
+ (accountHasRole, ) = _accessManager.hasRole(roleId.toInt(), account);
182
+ }
183
+
184
+ function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
185
+ return EnumerableSet.length(_roleMembers[roleId]);
186
+ }
187
+
188
+ function getRoleMember(RoleId roleId, uint256 idx) external view returns (address roleMember) {
189
+ return EnumerableSet.at(_roleMembers[roleId], idx);
190
+ }
191
+
192
+ //--- Target ------------------------------------------------------//
193
+ function createTarget(address target, string memory name) external restricted() {
194
+ _createTarget(target, name, true, true);
195
+ }
196
+
197
+ function setTargetLocked(address target, bool locked) external restricted() {
198
+ if (!targetExists(target)) {
199
+ revert ErrorSetLockedForNonexstentTarget(target);
200
+ }
201
+
202
+ _target[target].isLocked = locked;
203
+ _accessManager.setTargetClosed(target, locked);
204
+ }
205
+
206
+ function targetExists(address target) public view returns (bool exists) {
207
+ return _target[target].createdAt.gtz();
208
+ }
209
+
210
+ //--- internal view/pure functions --------------------------------------//
211
+
212
+ function _createRole(RoleId roleId, string memory name, bool isCustom, bool validateParameters) internal {
213
+ if (validateParameters) {
214
+ _validateRoleParameters(roleId, name, isCustom);
215
+ }
216
+
217
+ RoleInfo memory role = RoleInfo(
218
+ ShortStrings.toShortString(name),
219
+ isCustom,
220
+ false, // role un-locked,
221
+ TimestampLib.blockTimestamp(),
222
+ TimestampLib.blockTimestamp());
223
+
224
+ _role[roleId] = role;
225
+ _roleForName[role.name] = roleId;
226
+ _roles.push(roleId);
227
+ }
228
+
229
+ function _validateRoleParameters(
230
+ RoleId roleId,
231
+ string memory name,
232
+ bool isCustom
233
+ )
234
+ internal
235
+ view
236
+ returns (RoleInfo memory existingRole)
237
+ {
238
+ // check role id
239
+ uint64 roleIdInt = RoleId.unwrap(roleId);
240
+ if(roleIdInt == _accessManager.ADMIN_ROLE() || roleIdInt == _accessManager.PUBLIC_ROLE()) {
241
+ revert ErrorRoleIdInvalid(roleId);
242
+ }
243
+
244
+ // prevent changing isCustom for existing roles
245
+ existingRole = _role[roleId];
246
+
247
+ if (existingRole.createdAt.gtz() && isCustom != existingRole.isCustom) {
248
+ revert ErrorRoleIsCustomIsImmutable(roleId, isCustom, existingRole.isCustom);
249
+ }
250
+
251
+ if (isCustom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
252
+ revert ErrorRoleIdTooSmall(roleId);
253
+ } else if (!isCustom && roleIdInt >= CUSTOM_ROLE_ID_MIN) {
254
+ revert ErrorRoleIdTooBig(roleId);
255
+ }
256
+
257
+ // role name checks
258
+ ShortString nameShort = ShortStrings.toShortString(name);
259
+ if (ShortStrings.byteLength(nameShort) == 0) {
260
+ revert ErrorRoleNameEmpty(roleId);
261
+ }
262
+
263
+ if (_roleForName[nameShort] != RoleIdLib.zero() && _roleForName[nameShort] != roleId) {
264
+ revert ErrorRoleNameNotUnique(_roleForName[nameShort], nameShort);
265
+ }
266
+ }
267
+
268
+ function _createTarget(address target, string memory name, bool isCustom, bool validateParameters) internal {
269
+ if (validateParameters) {
270
+ _validateTargetParameters(target, name, isCustom);
271
+ }
272
+
273
+ TargetInfo memory info = TargetInfo(
274
+ ShortStrings.toShortString(name),
275
+ isCustom,
276
+ _accessManager.isTargetClosed(target), // sync with state in access manager
277
+ TimestampLib.blockTimestamp(),
278
+ TimestampLib.blockTimestamp());
279
+
280
+ _target[target] = info;
281
+ _targetForName[info.name] = target;
282
+ _targets.push(target);
283
+ }
284
+
285
+ function _validateTargetParameters(address target, string memory name, bool isCustom) internal view {
286
+
287
+ }
288
+ }
@@ -1,71 +1,41 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {Versionable} from "../shared/Versionable.sol";
5
- import {Registerable} from "../shared/Registerable.sol";
6
- // import {IRegistry} from "../registry/IRegistry.sol";
7
-
8
- // import {IInstance} from "./IInstance.sol";
9
- import {ObjectType, INSTANCE} from "../types/ObjectType.sol";
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
+
7
+ import {IAccess} from "./module/IAccess.sol";
8
+ import {IBundle} from "./module/IBundle.sol";
9
+ import {IPolicy} from "./module/IPolicy.sol";
10
+ import {IRisk} from "./module/IRisk.sol";
11
+ import {ISetup} from "./module/ISetup.sol";
12
+ import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
13
+ import {KeyValueStore} from "./base/KeyValueStore.sol";
14
+ import {IInstance} from "./IInstance.sol";
15
+ import {InstanceReader} from "./InstanceReader.sol";
16
+ import {BundleManager} from "./BundleManager.sol";
10
17
  import {NftId} from "../types/NftId.sol";
11
- import {Version, VersionPart, VersionLib} from "../types/Version.sol";
12
-
18
+ import {NumberId} from "../types/NumberId.sol";
19
+ import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
20
+ import {RiskId, RiskIdLib} from "../types/RiskId.sol";
21
+ import {RoleId, RoleIdLib} from "../types/RoleId.sol";
22
+ import {StateId, ACTIVE} from "../types/StateId.sol";
23
+ import {ERC165} from "../shared/ERC165.sol";
24
+ import {Registerable} from "../shared/Registerable.sol";
25
+ import {ComponentOwnerService} from "./service/ComponentOwnerService.sol";
13
26
  import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
14
- import {IProductService} from "./service/IProductService.sol";
27
+ import {IDistributionService} from "./service/IDistributionService.sol";
15
28
  import {IPoolService} from "./service/IPoolService.sol";
16
-
17
- import {IServiceLinked} from "./IServiceLinked.sol";
18
- import {IInstance} from "./IInstance.sol";
19
-
20
- abstract contract InstanceBase is
21
- Versionable,
22
- Registerable,
23
- IServiceLinked
29
+ import {IProductService} from "./service/IProductService.sol";
30
+ import {VersionPart} from "../types/Version.sol";
31
+ import {IInstanceBase} from "./IInstanceBase.sol";
32
+
33
+ contract InstanceBase is
34
+ IInstanceBase,
35
+ KeyValueStore,
36
+ ERC165,
37
+ Registerable
24
38
  {
25
- IComponentOwnerService internal _componentOwnerService;
26
- IProductService internal _productService;
27
- IPoolService internal _poolService;
28
-
29
- constructor(
30
- address registry,
31
- NftId registryNftId
32
- )
33
- Registerable(registry, registryNftId)
34
- Versionable()
35
- {
36
- _registerInterface(type(IInstance).interfaceId);
37
- _linkToServicesInRegistry();
38
- }
39
-
40
- // from versionable
41
- function getVersion()
42
- public
43
- pure
44
- virtual override
45
- returns(Version)
46
- {
47
- return VersionLib.toVersion(3,0,0);
48
- }
49
-
50
- // from registerable
51
- function getType() external pure override returns (ObjectType objectType) {
52
- return INSTANCE();
53
- }
54
-
55
39
 
56
- // internal / private functions
57
- function _linkToServicesInRegistry() internal {
58
- VersionPart majorVersion = getVersion().toMajorPart();
59
- _componentOwnerService = IComponentOwnerService(_getAndCheck("ComponentOwnerService", majorVersion));
60
- _productService = IProductService(_getAndCheck("ProductService", majorVersion));
61
- _poolService = IPoolService(_getAndCheck("PoolService", majorVersion));
62
- }
63
40
 
64
- function _getAndCheck(string memory serviceName, VersionPart majorVersion) internal view returns (address serviceAddress) {
65
- serviceAddress = _registry.getServiceAddress(serviceName, majorVersion);
66
- require(
67
- serviceAddress != address(0),
68
- "ERROR:INS-001:NOT_REGISTERED"
69
- );
70
- }
71
41
  }