@etherisc/gif-next 0.0.2-c576a00-897 → 0.0.2-c5c9395-682

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 (503) hide show
  1. package/README.md +262 -20
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +842 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1329 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +605 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +823 -115
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +608 -57
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1132 -143
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +967 -105
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1501 -1151
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +633 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2094 -1242
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1330 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1289 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1179 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +741 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +607 -0
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +532 -0
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  52. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  53. package/artifacts/contracts/{experiment/kvstore → instance/module}/IBundle.sol/IBundle.json +1 -1
  54. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  55. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  56. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  57. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  58. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  59. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  60. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  62. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  63. package/artifacts/contracts/instance/module/{bundle/IBundle.sol/IBundle.json → ISetup.sol/ISetup.json} +2 -2
  64. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  65. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1039 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +673 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1231 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +721 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +817 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1798 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +805 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +622 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +659 -0
  86. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +475 -0
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +1090 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +606 -0
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +577 -109
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +186 -213
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1092 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +697 -0
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +965 -199
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +460 -293
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -34
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +866 -0
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  116. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -101
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1158 -0
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  129. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  133. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +38 -74
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +100 -33
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  139. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +164 -142
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +256 -25
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  154. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  155. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +261 -217
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.json +10 -10
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +272 -26
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +44 -10
  168. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestService.sol/TestService.json +347 -130
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  171. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  173. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +12 -12
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +38 -140
  176. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  177. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  178. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  179. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +2 -2
  180. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
  182. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -40
  184. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  186. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  187. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  188. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  189. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  190. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Fee.sol/FeeLib.json +84 -14
  192. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  193. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  194. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +78 -4
  196. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  197. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  198. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  200. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  202. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  204. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  205. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  206. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  208. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  210. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  212. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  214. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  215. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  216. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  218. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  219. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  220. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  221. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  222. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  223. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  224. package/contracts/components/Component.sol +253 -0
  225. package/contracts/components/Distribution.sol +280 -0
  226. package/contracts/components/IComponent.sol +76 -0
  227. package/contracts/components/IDistributionComponent.sol +71 -0
  228. package/contracts/components/IPoolComponent.sol +98 -42
  229. package/contracts/components/IProductComponent.sol +30 -9
  230. package/contracts/components/Pool.sol +238 -109
  231. package/contracts/components/Product.sol +218 -42
  232. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  233. package/contracts/instance/BundleManager.sol +127 -0
  234. package/contracts/instance/Cloneable.sol +51 -0
  235. package/contracts/instance/IInstance.sol +87 -42
  236. package/contracts/instance/IInstanceService.sol +72 -0
  237. package/contracts/instance/Instance.sol +311 -50
  238. package/contracts/instance/InstanceAccessManager.sol +527 -0
  239. package/contracts/instance/InstanceReader.sol +291 -0
  240. package/contracts/instance/InstanceService.sol +495 -0
  241. package/contracts/instance/InstanceServiceManager.sol +54 -0
  242. package/contracts/instance/ObjectManager.sol +82 -0
  243. package/contracts/instance/base/ComponentService.sol +121 -0
  244. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  245. package/contracts/instance/base/ILifecycle.sol +30 -0
  246. package/contracts/instance/base/KeyValueStore.sol +180 -0
  247. package/contracts/instance/base/Lifecycle.sol +109 -0
  248. package/contracts/instance/module/IAccess.sol +54 -0
  249. package/contracts/instance/module/IBundle.sol +23 -0
  250. package/contracts/instance/module/IComponents.sol +41 -0
  251. package/contracts/instance/module/IDistribution.sol +41 -0
  252. package/contracts/instance/module/IPolicy.sol +72 -0
  253. package/contracts/instance/module/IRisk.sol +11 -0
  254. package/contracts/instance/module/ISetup.sol +33 -0
  255. package/contracts/instance/module/ITreasury.sol +23 -0
  256. package/contracts/instance/service/ApplicationService.sol +350 -0
  257. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  258. package/contracts/instance/service/BundleService.sol +431 -0
  259. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  260. package/contracts/instance/service/ClaimService.sol +151 -0
  261. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  262. package/contracts/instance/service/DistributionService.sol +435 -0
  263. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  264. package/contracts/instance/service/IApplicationService.sol +82 -0
  265. package/contracts/instance/service/IBundleService.sol +93 -0
  266. package/contracts/instance/service/IClaimService.sol +61 -0
  267. package/contracts/instance/service/IDistributionService.sol +99 -0
  268. package/contracts/instance/service/IPolicyService.sol +72 -0
  269. package/contracts/instance/service/IPoolService.sol +81 -12
  270. package/contracts/instance/service/IProductService.sol +21 -39
  271. package/contracts/instance/service/PolicyService.sol +362 -0
  272. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  273. package/contracts/instance/service/PoolService.sol +249 -69
  274. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  275. package/contracts/instance/service/ProductService.sol +147 -292
  276. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  277. package/contracts/registry/ChainNft.sol +87 -36
  278. package/contracts/registry/IRegistry.sol +68 -24
  279. package/contracts/registry/IRegistryService.sol +68 -0
  280. package/contracts/registry/ITransferInterceptor.sol +7 -0
  281. package/contracts/registry/Registry.sol +372 -286
  282. package/contracts/registry/RegistryAccessManager.sol +216 -0
  283. package/contracts/registry/RegistryService.sol +282 -0
  284. package/contracts/registry/RegistryServiceManager.sol +62 -0
  285. package/contracts/registry/ReleaseManager.sol +324 -0
  286. package/contracts/registry/TokenRegistry.sol +116 -0
  287. package/contracts/shared/ContractDeployerLib.sol +72 -0
  288. package/contracts/shared/ERC165.sol +14 -8
  289. package/contracts/shared/INftOwnable.sol +23 -0
  290. package/contracts/shared/IPolicyHolder.sol +26 -0
  291. package/contracts/shared/IRegisterable.sol +10 -19
  292. package/contracts/shared/IRegistryLinked.sol +12 -0
  293. package/contracts/shared/IService.sol +16 -0
  294. package/contracts/shared/IVersionable.sol +38 -37
  295. package/contracts/shared/NftOwnable.sol +120 -0
  296. package/contracts/shared/PolicyHolder.sol +81 -0
  297. package/contracts/shared/ProxyManager.sol +169 -0
  298. package/contracts/shared/Registerable.sol +54 -66
  299. package/contracts/shared/RegistryLinked.sol +48 -0
  300. package/contracts/shared/Service.sol +72 -0
  301. package/contracts/shared/TokenHandler.sol +33 -0
  302. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  303. package/contracts/shared/Versionable.sol +38 -68
  304. package/contracts/test/TestFee.sol +2 -2
  305. package/contracts/test/TestRegisterable.sol +5 -6
  306. package/contracts/test/TestRoleId.sol +2 -2
  307. package/contracts/test/TestService.sol +7 -14
  308. package/contracts/test/Usdc.sol +26 -0
  309. package/contracts/types/Amount.sol +60 -0
  310. package/contracts/types/Blocknumber.sol +1 -16
  311. package/contracts/types/ClaimId.sol +52 -0
  312. package/contracts/types/DistributorType.sol +55 -0
  313. package/contracts/types/Fee.sol +22 -9
  314. package/contracts/types/Key32.sol +50 -0
  315. package/contracts/types/NftId.sol +24 -1
  316. package/contracts/types/NftIdSet.sol +26 -24
  317. package/contracts/types/NumberId.sol +52 -0
  318. package/contracts/types/ObjectType.sol +53 -15
  319. package/contracts/types/PayoutId.sol +54 -0
  320. package/contracts/types/Referral.sol +89 -0
  321. package/contracts/types/RiskId.sol +24 -7
  322. package/contracts/types/RoleId.sol +72 -11
  323. package/contracts/types/Seconds.sol +54 -0
  324. package/contracts/types/StateId.sol +13 -2
  325. package/contracts/types/Timestamp.sol +17 -13
  326. package/contracts/types/UFixed.sol +145 -25
  327. package/contracts/types/Version.sol +14 -1
  328. package/package.json +9 -5
  329. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  330. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  331. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  334. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  336. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  338. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  340. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  342. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  344. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  346. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  348. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  351. package/artifacts/contracts/experiment/kvstore/BundleModuleStore.sol/BundleModuleStore.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/kvstore/BundleModuleStore.sol/BundleModuleStore.json +0 -543
  353. package/artifacts/contracts/experiment/kvstore/IBundle.sol/IBundle.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/kvstore/KeyMapper.sol/KeyMapper.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/kvstore/KeyMapper.sol/KeyMapper.json +0 -185
  356. package/artifacts/contracts/experiment/kvstore/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/kvstore/KeyValueStore.sol/KeyValueStore.json +0 -383
  358. package/artifacts/contracts/experiment/kvstore/KvStore.sol/KvStore.dbg.json +0 -4
  359. package/artifacts/contracts/experiment/kvstore/KvStore.sol/KvStore.json +0 -1064
  360. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  361. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  362. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  363. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  364. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  365. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  366. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  367. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  368. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  369. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  370. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  371. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  372. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  373. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  374. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  375. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  376. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  377. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  378. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  380. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  381. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  384. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -276
  386. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  387. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -276
  389. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  391. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  393. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  394. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  395. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  396. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  397. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  398. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  399. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  400. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  401. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  402. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  403. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  404. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  405. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  406. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  407. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  409. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  410. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  411. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  412. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  413. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  414. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  415. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  416. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  417. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  418. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  419. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -167
  420. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  421. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -185
  422. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  423. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  424. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  425. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  426. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  427. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  428. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  429. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  430. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -491
  431. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  432. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  433. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  434. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  435. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  436. package/artifacts/contracts/instance/service/IService.sol/IService.json +0 -300
  437. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  438. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.json +0 -300
  439. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  440. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  441. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  442. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  443. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  444. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  445. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  446. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  447. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  448. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  449. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  450. package/contracts/components/BaseComponent.sol +0 -89
  451. package/contracts/components/IBaseComponent.sol +0 -19
  452. package/contracts/experiment/errors/Require.sol +0 -38
  453. package/contracts/experiment/errors/Revert.sol +0 -44
  454. package/contracts/experiment/inheritance/A.sol +0 -53
  455. package/contracts/experiment/inheritance/B.sol +0 -28
  456. package/contracts/experiment/inheritance/C.sol +0 -34
  457. package/contracts/experiment/inheritance/IA.sol +0 -13
  458. package/contracts/experiment/inheritance/IB.sol +0 -10
  459. package/contracts/experiment/inheritance/IC.sol +0 -12
  460. package/contracts/experiment/kvstore/BundleModuleStore.sol +0 -93
  461. package/contracts/experiment/kvstore/IBundle.sol +0 -22
  462. package/contracts/experiment/kvstore/KeyMapper.sol +0 -40
  463. package/contracts/experiment/kvstore/KeyValueStore.sol +0 -156
  464. package/contracts/experiment/kvstore/KvStore.sol +0 -195
  465. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  466. package/contracts/experiment/statemachine/ISM.sol +0 -25
  467. package/contracts/experiment/statemachine/README.md +0 -112
  468. package/contracts/experiment/statemachine/SM.sol +0 -57
  469. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  470. package/contracts/experiment/types/TypeA.sol +0 -47
  471. package/contracts/experiment/types/TypeB.sol +0 -29
  472. package/contracts/instance/IInstanceLinked.sol +0 -8
  473. package/contracts/instance/IServiceLinked.sol +0 -12
  474. package/contracts/instance/InstanceBase.sol +0 -71
  475. package/contracts/instance/module/access/Access.sol +0 -149
  476. package/contracts/instance/module/access/IAccess.sol +0 -53
  477. package/contracts/instance/module/bundle/BundleModule.sol +0 -228
  478. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  479. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  480. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  481. package/contracts/instance/module/component/ComponentModule.sol +0 -103
  482. package/contracts/instance/module/component/IComponent.sol +0 -53
  483. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  484. package/contracts/instance/module/lifecycle/LifecycleModule.sol +0 -89
  485. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  486. package/contracts/instance/module/policy/PolicyModule.sol +0 -84
  487. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  488. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  489. package/contracts/instance/module/risk/IRisk.sol +0 -39
  490. package/contracts/instance/module/risk/RiskModule.sol +0 -55
  491. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  492. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  493. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  494. package/contracts/instance/service/ComponentOwnerService.sol +0 -171
  495. package/contracts/instance/service/ComponentServiceBase.sol +0 -41
  496. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  497. package/contracts/instance/service/IService.sol +0 -15
  498. package/contracts/instance/service/ServiceBase.sol +0 -39
  499. package/contracts/registry/IChainNft.sol +0 -21
  500. package/contracts/registry/IRegistryLinked.sol +0 -8
  501. package/contracts/shared/IOwnable.sol +0 -6
  502. package/contracts/test/TestPool.sol +0 -22
  503. package/contracts/test/TestProduct.sol +0 -44
@@ -0,0 +1,527 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
6
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
7
+
8
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, INSTANCE_OWNER_ROLE, INSTANCE_ROLE} from "../types/RoleId.sol";
9
+ import {TimestampLib} from "../types/Timestamp.sol";
10
+ import {NftId} from "../types/NftId.sol";
11
+
12
+ import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
13
+
14
+ import {IRegistry} from "../registry/IRegistry.sol";
15
+
16
+ import {IInstance} from "./IInstance.sol";
17
+ import {IAccess} from "./module/IAccess.sol";
18
+
19
+ contract InstanceAccessManager is
20
+ AccessManagedUpgradeable
21
+ {
22
+ event LogRoleCreation(RoleId roleId, ShortString name, IAccess.Type rtype);
23
+ event LogTargetCreation(address target, ShortString name, IAccess.Type ttype, bool isLocked);
24
+
25
+ using RoleIdLib for RoleId;
26
+
27
+ string public constant ADMIN_ROLE_NAME = "AdminRole";
28
+ string public constant PUBLIC_ROLE_NAME = "PublicRole";
29
+ string public constant INSTANCE_ROLE_NAME = "InstanceRole";
30
+ string public constant INSTANCE_OWNER_ROLE_NAME = "InstanceOwnerRole";
31
+
32
+ uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
33
+ uint32 public constant EXECUTION_DELAY = 0;
34
+
35
+ // role specific state
36
+ mapping(RoleId roleId => IAccess.RoleInfo info) internal _roleInfo;
37
+ mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
38
+ mapping(ShortString name => RoleId roleId) internal _roleIdForName;
39
+ RoleId [] internal _roleIds;
40
+ uint64 _idNext;
41
+
42
+ // target specific state
43
+ mapping(address target => IAccess.TargetInfo info) internal _targetInfo;
44
+ mapping(ShortString name => address target) internal _targetAddressForName;
45
+ address [] internal _targets;
46
+
47
+ AccessManagerUpgradeableInitializeable internal _accessManager;
48
+ IRegistry internal _registry;
49
+
50
+ modifier restrictedToRoleAdmin(RoleId roleId) {
51
+ RoleId admin = getRoleAdmin(roleId);
52
+ (bool inRole, uint32 executionDelay) = _accessManager.hasRole(admin.toInt(), _msgSender());
53
+ assert(executionDelay == 0); // to be sure no delayed execution functionality is used
54
+ if (!inRole) {
55
+ revert IAccess.ErrorIAccessCallerIsNotRoleAdmin(_msgSender(), roleId);
56
+ }
57
+ _;
58
+ }
59
+
60
+ // instance owner is granted upon instance nft minting in callback function
61
+ function initialize(address instanceAddress) external initializer
62
+ {
63
+ IInstance instance = IInstance(instanceAddress);
64
+ IRegistry registry = instance.getRegistry();
65
+ address authority = instance.authority();
66
+
67
+ __AccessManaged_init(authority);
68
+
69
+ _accessManager = AccessManagerUpgradeableInitializeable(authority);
70
+ _registry = registry;
71
+ _idNext = CUSTOM_ROLE_ID_MIN;
72
+
73
+ _createRole(ADMIN_ROLE(), ADMIN_ROLE_NAME, IAccess.Type.Core);
74
+ _createRole(PUBLIC_ROLE(), PUBLIC_ROLE_NAME, IAccess.Type.Core);
75
+ _createRole(INSTANCE_ROLE(), INSTANCE_ROLE_NAME, IAccess.Type.Core);
76
+ _createRole(INSTANCE_OWNER_ROLE(), INSTANCE_OWNER_ROLE_NAME, IAccess.Type.Gif);
77
+
78
+ // assume `this` is already a member of ADMIN_ROLE
79
+ EnumerableSet.add(_roleMembers[ADMIN_ROLE()], address(this));
80
+
81
+ grantRole(INSTANCE_ROLE(), instanceAddress);
82
+ setRoleAdmin(INSTANCE_OWNER_ROLE(), INSTANCE_ROLE());
83
+ }
84
+
85
+ //--- Role ------------------------------------------------------//
86
+ // ADMIN_ROLE
87
+ // assume all core roles are know at deployment time
88
+ // assume core roles are set and granted only during instance cloning
89
+ // assume core roles are never revoked -> core roles admin is never active after intialization
90
+ function createCoreRole(RoleId roleId, string memory name)
91
+ external
92
+ restricted()
93
+ {
94
+ _createRole(roleId, name, IAccess.Type.Core);
95
+ }
96
+ // ADMIN_ROLE
97
+ // assume gif roles can be revoked
98
+ // assume admin is INSTANCE_OWNER_ROLE or INSTANCE_ROLE
99
+ function createGifRole(RoleId roleId, string memory name, RoleId admin)
100
+ external
101
+ restricted()
102
+ {
103
+ _createRole(roleId, name, IAccess.Type.Gif);
104
+ setRoleAdmin(roleId, admin);
105
+ }
106
+
107
+ // INSTANCE_OWNER_ROLE
108
+ function createRole(string memory roleName, string memory adminName)
109
+ external
110
+ restricted()
111
+ returns(RoleId roleId, RoleId admin)
112
+ {
113
+ (roleId, admin) = _getNextCustomRoleId();
114
+
115
+ _createRole(roleId, roleName, IAccess.Type.Custom);
116
+ _createRole(admin, adminName, IAccess.Type.Custom);
117
+
118
+ // TODO works without this -> why?
119
+ setRoleAdmin(roleId, admin);
120
+ setRoleAdmin(admin, INSTANCE_OWNER_ROLE());
121
+ }
122
+
123
+ // ADMIN_ROLE
124
+ // assume used by instance service only during instance cloning
125
+ // assume used only by this.createRole(), this.createGifRole() afterwards
126
+ function setRoleAdmin(RoleId roleId, RoleId admin)
127
+ public
128
+ restricted()
129
+ {
130
+ if (!roleExists(roleId)) {
131
+ revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
132
+ }
133
+
134
+ if(_roleInfo[roleId].rtype == IAccess.Type.Core) {
135
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
136
+ }
137
+
138
+ if (!roleExists(admin)) {
139
+ revert IAccess.ErrorIAccessRoleIdDoesNotExist(admin);
140
+ }
141
+
142
+ _roleInfo[roleId].admin = admin;
143
+ }
144
+
145
+ function grantRole(RoleId roleId, address member)
146
+ public
147
+ restrictedToRoleAdmin(roleId)
148
+ returns (bool granted)
149
+ {
150
+ if (!roleExists(roleId)) {
151
+ revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
152
+ }
153
+
154
+ granted = EnumerableSet.add(_roleMembers[roleId], member);
155
+ if(granted) {
156
+ _accessManager.grantRole(roleId.toInt(), member, EXECUTION_DELAY);
157
+ }
158
+ }
159
+
160
+ function revokeRole(RoleId roleId, address member)
161
+ external
162
+ restrictedToRoleAdmin(roleId)
163
+ returns (bool)
164
+ {
165
+ return _revokeRole(roleId, member);
166
+ }
167
+
168
+ // INSTANCE_OWNER_ROLE
169
+ // IMPORTANT: unbounded function, revoke all or revert
170
+ // Instance owner role decides what to do in case of custom role admin bening revoked, e.g.:
171
+ // 1) revoke custom role from ALL members
172
+ // 2) revoke custom role admin from ALL members
173
+ // 3) 1) + 2)
174
+ // 4) revoke only 1 member of custom role admin
175
+ function revokeRoleAllMembers(RoleId roleId)
176
+ external
177
+ restrictedToRoleAdmin(roleId)
178
+ returns (bool revoked)
179
+ {
180
+ if (!roleExists(roleId)) {
181
+ revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
182
+ }
183
+
184
+ uint memberCount = EnumerableSet.length(_roleMembers[roleId]);
185
+ for(uint memberIdx = 0; memberIdx < memberCount; memberIdx++)
186
+ {
187
+ address member = EnumerableSet.at(_roleMembers[roleId], memberIdx);
188
+ EnumerableSet.remove(_roleMembers[roleId], member);
189
+ _accessManager.revokeRole(roleId.toInt(), member);
190
+ }
191
+ }
192
+
193
+ /// @dev not restricted function by intention
194
+ /// the restriction to role members is already enforced by the call to the access manager
195
+ function renounceRole(RoleId roleId)
196
+ external
197
+ returns (bool)
198
+ {
199
+ IAccess.Type rtype = _roleInfo[roleId].rtype;
200
+ if(rtype == IAccess.Type.Core || rtype == IAccess.Type.Gif) {
201
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, rtype);
202
+ }
203
+
204
+ address member = msg.sender;
205
+ // cannot use accessManger.renounce as it directly checks against msg.sender
206
+ return _revokeRole(roleId, member);
207
+ }
208
+
209
+ function roleExists(RoleId roleId) public view returns (bool exists) {
210
+ return _roleInfo[roleId].createdAt.gtz();
211
+ }
212
+ // TODO returns ADMIN_ROLE id for non existent roleId
213
+ function getRoleAdmin(RoleId roleId) public view returns(RoleId admin) {
214
+ return _roleInfo[roleId].admin;
215
+ }
216
+
217
+ function getRoleInfo(RoleId roleId) external view returns (IAccess.RoleInfo memory info) {
218
+ return _roleInfo[roleId];
219
+ }
220
+
221
+ function roleMembers(RoleId roleId) public view returns (uint256 numberOfMembers) {
222
+ return EnumerableSet.length(_roleMembers[roleId]);
223
+ }
224
+
225
+ function getRoleId(uint256 idx) external view returns (RoleId roleId) {
226
+ return _roleIds[idx];
227
+ }
228
+
229
+ // TODO now: for non existent name returns ADMIN_ROLE id
230
+ function getRoleIdForName(string memory name) external view returns (RoleId roleId) {
231
+ return _roleIdForName[ShortStrings.toShortString(name)];
232
+ }
233
+
234
+ function roleMember(RoleId roleId, uint256 idx) external view returns (address member) {
235
+ return EnumerableSet.at(_roleMembers[roleId], idx);
236
+ }
237
+
238
+ function hasRole(RoleId roleId, address account) external view returns (bool accountHasRole) {
239
+ (accountHasRole, ) = _accessManager.hasRole(roleId.toInt(), account);
240
+ }
241
+
242
+ function roles() external view returns (uint256 numberOfRoles) {
243
+ return _roleIds.length;
244
+ }
245
+
246
+ //--- Target ------------------------------------------------------//
247
+ // ADMIN_ROLE
248
+ // assume some core targets are registred (instance) while others are not (instance accesss manager, instance reader, bundle manager)
249
+ function createCoreTarget(address target, string memory name) external restricted() {
250
+ _createTarget(target, name, IAccess.Type.Core);
251
+ }
252
+ // INSTANCE_SERVICE_ROLE
253
+ // assume gif target is registered and belongs to the same instance as instance access manager
254
+ function createGifTarget(address target, string memory name) external restricted()
255
+ {
256
+ if(!_registry.isRegistered(target)) {
257
+ revert IAccess.ErrorIAccessTargetNotRegistered(target);
258
+ }
259
+
260
+ _createTarget(target, name, IAccess.Type.Gif);
261
+ }
262
+ // INSTANCE_OWNER_ROLE
263
+ // assume custom target.authority() is constant -> target MUST not be used with different instance access manager
264
+ // assume custom target can not be registered as component -> each service which is doing component registration MUST register a gif target
265
+ // assume custom target can not be registered as instance or service -> why?
266
+ // TODO check target associated with instance owner or instance or instance components or components helpers
267
+ function createTarget(address target, string memory name) external restricted()
268
+ {
269
+ _createTarget(target, name, IAccess.Type.Custom);
270
+ }
271
+
272
+ // INSTANCE_SERVICE_ROLE
273
+ // IMPORTANT: instance access manager MUST be of Core type -> otherwise will be locked forever
274
+ function setTargetLocked(address target, bool locked)
275
+ external
276
+ restricted()
277
+ {
278
+ IAccess.Type targetType = _targetInfo[target].ttype;
279
+ if(target == address(0) || targetType == IAccess.Type.NotInitialized) {
280
+ revert IAccess.ErrorIAccessTargetDoesNotExist(target);
281
+ }
282
+
283
+ if(targetType == IAccess.Type.Core) {
284
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, targetType);
285
+ }
286
+
287
+ // TODO isLocked is redundant but makes getTargetInfo() faster
288
+ _targetInfo[target].isLocked = locked;
289
+ _accessManager.setTargetClosed(target, locked);
290
+ }
291
+
292
+ // allowed combinations of roles and targets:
293
+ //1) set core role for core target
294
+ //2) set gif role for gif target
295
+ //3) set custom role for gif target
296
+ //4) set custom role for custom target
297
+
298
+ // ADMIN_ROLE if used only during initialization, works with:
299
+ // any roles for any targets
300
+ // INSTANCE_SERVICE_ROLE if used not only during initilization, works with:
301
+ // core roles for core targets
302
+ // gif roles for gif targets
303
+ function setCoreTargetFunctionRole(
304
+ string memory targetName,
305
+ bytes4[] calldata selectors,
306
+ RoleId roleId
307
+ )
308
+ public
309
+ virtual
310
+ restricted()
311
+ {
312
+ ShortString nameShort = ShortStrings.toShortString(targetName);
313
+ address target = _targetAddressForName[nameShort];
314
+
315
+ // not custom target
316
+ if(_targetInfo[target].ttype == IAccess.Type.Custom) {
317
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Custom);
318
+ }
319
+
320
+ // not custom role
321
+ if(_roleInfo[roleId].rtype == IAccess.Type.Custom) {
322
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Custom);
323
+ }
324
+
325
+ _setTargetFunctionRole(target, nameShort, selectors, roleId);
326
+ }
327
+
328
+ // INSTANCE_OWNER_ROLE
329
+ // gif role for gif target
330
+ // gif role for custom target
331
+ // custom role for gif target
332
+ // custom role for custom target
333
+ // TODO instance owner can mess with gif target (component) -> e.g. set custom role for function intendent to work with gif role
334
+ function setTargetFunctionRole(
335
+ string memory targetName,
336
+ bytes4[] calldata selectors,
337
+ RoleId roleId
338
+ )
339
+ public
340
+ virtual
341
+ restricted()
342
+ {
343
+ ShortString nameShort = ShortStrings.toShortString(targetName);
344
+ address target = _targetAddressForName[nameShort];
345
+
346
+ // not core target
347
+ if(_targetInfo[target].ttype == IAccess.Type.Core) {
348
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Core);
349
+ }
350
+
351
+ // not core role
352
+ if(_roleInfo[roleId].rtype == IAccess.Type.Core) {
353
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
354
+ }
355
+
356
+ _setTargetFunctionRole(target, nameShort, selectors, roleId);
357
+ }
358
+
359
+ function getTargetAddress(string memory targetName) public view returns(address targetAddress) {
360
+ ShortString nameShort = ShortStrings.toShortString(targetName);
361
+ return _targetAddressForName[nameShort];
362
+ }
363
+
364
+ function isTargetLocked(address target) public view returns (bool locked) {
365
+ return _accessManager.isTargetClosed(target);
366
+ }
367
+
368
+ function targetExists(address target) public view returns (bool exists) {
369
+ return _targetInfo[target].createdAt.gtz();
370
+ }
371
+
372
+ function getTargetInfo(address target) public view returns (IAccess.TargetInfo memory) {
373
+ return _targetInfo[target];
374
+ }
375
+
376
+ //--- Role internal view/pure functions --------------------------------------//
377
+ function _createRole(RoleId roleId, string memory roleName, IAccess.Type rtype)
378
+ internal
379
+ {
380
+ ShortString name = ShortStrings.toShortString(roleName);
381
+ _validateRole(roleId, name, rtype);
382
+
383
+ if(roleExists(roleId)) {
384
+ revert IAccess.ErrorIAccessRoleIdExists(roleId);
385
+ }
386
+
387
+ if (_roleIdForName[name].gtz()) {
388
+ revert IAccess.ErrorIAccessRoleNameExists(roleId, _roleIdForName[name], name);
389
+ }
390
+
391
+ _roleInfo[roleId] = IAccess.RoleInfo(
392
+ name,
393
+ rtype,
394
+ ADMIN_ROLE(),
395
+ TimestampLib.blockTimestamp(),
396
+ TimestampLib.blockTimestamp()
397
+ );
398
+ _roleIdForName[name] = roleId;
399
+ _roleIds.push(roleId);
400
+
401
+ emit LogRoleCreation(roleId, name, rtype);
402
+ }
403
+
404
+ function _validateRole(RoleId roleId, ShortString name, IAccess.Type rtype)
405
+ internal
406
+ view
407
+ {
408
+ uint roleIdInt = roleId.toInt();
409
+ if(rtype == IAccess.Type.Custom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
410
+ revert IAccess.ErrorIAccessRoleIdTooSmall(roleId);
411
+ }
412
+
413
+ if(
414
+ rtype != IAccess.Type.Custom &&
415
+ roleIdInt >= CUSTOM_ROLE_ID_MIN &&
416
+ roleIdInt != PUBLIC_ROLE().toInt())
417
+ {
418
+ revert IAccess.ErrorIAccessRoleIdTooBig(roleId);
419
+ }
420
+
421
+ // role name checks
422
+ if (ShortStrings.byteLength(name) == 0) {
423
+ revert IAccess.ErrorIAccessRoleNameEmpty(roleId);
424
+ }
425
+ }
426
+
427
+ function _revokeRole(RoleId roleId, address member)
428
+ internal
429
+ returns(bool revoked)
430
+ {
431
+ if (!roleExists(roleId)) {
432
+ revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
433
+ }
434
+
435
+ revoked = EnumerableSet.remove(_roleMembers[roleId], member);
436
+ if(revoked) {
437
+ _accessManager.revokeRole(roleId.toInt(), member);
438
+ }
439
+ }
440
+
441
+ function _getNextCustomRoleId()
442
+ internal
443
+ returns(RoleId roleId, RoleId admin)
444
+ {
445
+ uint64 roleIdInt = _idNext;
446
+ uint64 adminInt = roleIdInt + 1;
447
+
448
+ _idNext = roleIdInt + 2;
449
+
450
+ roleId = RoleIdLib.toRoleId(roleIdInt);
451
+ admin = RoleIdLib.toRoleId(adminInt);
452
+ }
453
+
454
+ //--- Target internal view/pure functions --------------------------------------//
455
+ function _createTarget(address target, string memory targetName, IAccess.Type ttype)
456
+ internal
457
+ {
458
+ ShortString name = ShortStrings.toShortString(targetName);
459
+ _validateTarget(target, name, ttype);
460
+
461
+ if (_targetInfo[target].createdAt.gtz()) {
462
+ revert IAccess.ErrorIAccessTargetExists(target, _targetInfo[target].name);
463
+ }
464
+
465
+ if (_targetAddressForName[name] != address(0)) {
466
+ revert IAccess.ErrorIAccessTargetNameExists(
467
+ target,
468
+ _targetAddressForName[name],
469
+ name);
470
+ }
471
+
472
+ bool isLocked = _accessManager.isTargetClosed(target);// sync with state in access manager
473
+ _targetInfo[target] = IAccess.TargetInfo(
474
+ name,
475
+ ttype,
476
+ isLocked,
477
+ TimestampLib.blockTimestamp(),
478
+ TimestampLib.blockTimestamp()
479
+ );
480
+ _targetAddressForName[name] = target;
481
+ _targets.push(target);
482
+
483
+ emit LogTargetCreation(target, name, ttype, isLocked);
484
+ }
485
+
486
+ function _validateTarget(address target, ShortString name, IAccess.Type ttype)
487
+ internal
488
+ view
489
+ {
490
+ address targetAuthority = AccessManagedUpgradeable(target).authority();
491
+ if(targetAuthority != authority()) {
492
+ revert IAccess.ErrorIAccessTargetAuthorityInvalid(target, targetAuthority);
493
+ }
494
+
495
+ if (ShortStrings.byteLength(name) == 0) {
496
+ revert IAccess.ErrorIAccessTargetNameEmpty(target);
497
+ }
498
+ }
499
+
500
+ function _setTargetFunctionRole(
501
+ address target,
502
+ ShortString name,
503
+ bytes4[] calldata selectors,
504
+ RoleId roleId
505
+ )
506
+ internal
507
+ {
508
+ if (target == address(0)) {
509
+ revert IAccess.ErrorIAccessTargetDoesNotExist(target);
510
+ }
511
+
512
+ if (!roleExists(roleId)) {
513
+ revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
514
+ }
515
+
516
+ uint64 roleIdInt = RoleId.unwrap(roleId);
517
+ _accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
518
+ }
519
+
520
+ function canCall(
521
+ address caller,
522
+ address target,
523
+ bytes4 selector
524
+ ) public view virtual returns (bool immediate, uint32 delay) {
525
+ return _accessManager.canCall(caller, target, selector);
526
+ }
527
+ }