@etherisc/gif-next 0.0.2-bfb44e0-483 → 0.0.2-c0b400a-177

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 (344) hide show
  1. package/README.md +8 -8
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +80 -145
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +125 -239
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +77 -92
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +102 -183
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +261 -201
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +81 -164
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +278 -288
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +85 -218
  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 +1 -1
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +496 -536
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -212
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +567 -621
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +448 -121
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +120 -227
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +170 -397
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +207 -116
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +18 -220
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +54 -71
  50. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  53. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  58. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +182 -331
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +141 -366
  64. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +182 -107
  66. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  68. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  70. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +824 -268
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +312 -109
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +124 -206
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +89 -257
  78. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +514 -157
  82. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +45 -289
  84. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +69 -153
  86. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +12 -177
  88. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +85 -442
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +188 -141
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +116 -249
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +187 -104
  96. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +42 -272
  98. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +179 -104
  100. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  101. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  102. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +71 -180
  106. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  107. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  108. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
  110. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  112. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +90 -264
  114. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +182 -113
  116. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +34 -67
  120. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  121. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  122. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  123. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -30
  125. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -30
  128. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  129. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -21
  130. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IService.sol/IService.json +12 -177
  132. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
  134. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +10 -62
  136. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  137. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -23
  138. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  139. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +171 -88
  140. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +11 -74
  142. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  143. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -23
  144. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  145. package/artifacts/contracts/shared/Service.sol/Service.json +13 -215
  146. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  147. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  148. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  149. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  150. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -150
  152. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  154. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +11 -74
  156. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  158. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestService.sol/TestService.json +31 -269
  160. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  163. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +6 -188
  165. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  166. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  167. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  169. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  171. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  172. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  174. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/Fee.sol/FeeLib.json +2 -2
  176. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  177. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  178. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  180. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  181. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  182. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  185. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  187. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  189. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  191. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  193. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  194. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  195. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  197. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  199. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  201. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  203. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  205. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  207. package/contracts/components/Component.sol +96 -81
  208. package/contracts/components/Distribution.sol +29 -47
  209. package/contracts/components/IComponent.sol +40 -16
  210. package/contracts/components/IDistributionComponent.sol +1 -30
  211. package/contracts/components/IPoolComponent.sol +73 -47
  212. package/contracts/components/IProductComponent.sol +3 -2
  213. package/contracts/components/Pool.sol +171 -126
  214. package/contracts/components/Product.sol +38 -23
  215. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  216. package/contracts/instance/BundleManager.sol +7 -5
  217. package/contracts/instance/Cloneable.sol +7 -2
  218. package/contracts/instance/IInstance.sol +23 -11
  219. package/contracts/instance/IInstanceService.sol +18 -5
  220. package/contracts/instance/Instance.sol +62 -16
  221. package/contracts/instance/InstanceAccessManager.sol +382 -157
  222. package/contracts/instance/InstanceReader.sol +7 -10
  223. package/contracts/instance/InstanceService.sol +222 -160
  224. package/contracts/instance/InstanceServiceManager.sol +1 -1
  225. package/contracts/instance/ObjectManager.sol +6 -8
  226. package/contracts/instance/base/ComponentService.sol +5 -5
  227. package/contracts/instance/base/KeyValueStore.sol +5 -2
  228. package/contracts/instance/base/Lifecycle.sol +11 -2
  229. package/contracts/instance/module/IAccess.sol +20 -13
  230. package/contracts/instance/module/IBundle.sol +2 -1
  231. package/contracts/instance/module/IComponents.sol +35 -0
  232. package/contracts/instance/module/IDistribution.sol +2 -0
  233. package/contracts/instance/module/IPolicy.sol +30 -3
  234. package/contracts/instance/module/ISetup.sol +7 -21
  235. package/contracts/instance/service/ApplicationService.sol +139 -57
  236. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  237. package/contracts/instance/service/BundleService.sol +76 -38
  238. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  239. package/contracts/instance/service/ClaimService.sol +151 -0
  240. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  241. package/contracts/instance/service/DistributionService.sol +224 -31
  242. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  243. package/contracts/instance/service/IApplicationService.sol +9 -9
  244. package/contracts/instance/service/IBundleService.sol +19 -11
  245. package/contracts/instance/service/IClaimService.sol +61 -0
  246. package/contracts/instance/service/IDistributionService.sol +36 -3
  247. package/contracts/instance/service/IPolicyService.sol +18 -34
  248. package/contracts/instance/service/IPoolService.sol +17 -2
  249. package/contracts/instance/service/PolicyService.sol +74 -195
  250. package/contracts/instance/service/PolicyServiceManager.sol +2 -2
  251. package/contracts/instance/service/PoolService.sol +128 -17
  252. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  253. package/contracts/instance/service/ProductService.sol +10 -2
  254. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  255. package/contracts/registry/ChainNft.sol +8 -0
  256. package/contracts/registry/IRegistry.sol +2 -0
  257. package/contracts/registry/IRegistryService.sol +10 -8
  258. package/contracts/registry/ITransferInterceptor.sol +1 -0
  259. package/contracts/registry/Registry.sol +26 -21
  260. package/contracts/registry/RegistryService.sol +62 -40
  261. package/contracts/registry/RegistryServiceManager.sol +13 -13
  262. package/contracts/registry/ReleaseManager.sol +18 -28
  263. package/contracts/registry/TokenRegistry.sol +13 -10
  264. package/contracts/shared/ERC165.sol +2 -1
  265. package/contracts/shared/INftOwnable.sol +4 -9
  266. package/contracts/shared/IRegistryLinked.sol +0 -3
  267. package/contracts/shared/IService.sol +2 -0
  268. package/contracts/shared/IVersionable.sol +4 -47
  269. package/contracts/shared/NftOwnable.sol +10 -80
  270. package/contracts/shared/ProxyManager.sol +98 -24
  271. package/contracts/shared/Registerable.sol +3 -10
  272. package/contracts/shared/RegistryLinked.sol +10 -26
  273. package/contracts/shared/Service.sol +10 -12
  274. package/contracts/shared/TokenHandler.sol +11 -5
  275. package/contracts/shared/Versionable.sol +1 -90
  276. package/contracts/types/Blocknumber.sol +1 -0
  277. package/contracts/types/ClaimId.sol +52 -0
  278. package/contracts/types/Fee.sol +1 -0
  279. package/contracts/types/NftId.sol +8 -0
  280. package/contracts/types/ObjectType.sol +5 -4
  281. package/contracts/types/PayoutId.sol +54 -0
  282. package/contracts/types/Referral.sol +4 -0
  283. package/contracts/types/RoleId.sol +16 -9
  284. package/contracts/types/Seconds.sol +54 -0
  285. package/contracts/types/StateId.sol +1 -0
  286. package/contracts/types/Timestamp.sol +13 -13
  287. package/contracts/types/UFixed.sol +1 -0
  288. package/contracts/types/Version.sol +1 -0
  289. package/package.json +1 -1
  290. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  291. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  292. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  293. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  294. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  295. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  296. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  297. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  298. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  299. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  300. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  301. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  302. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  303. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  304. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  305. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  306. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  307. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  308. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  309. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  310. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  312. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  313. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  314. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  315. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  316. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  317. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  318. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  319. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  320. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  321. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  322. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  323. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  324. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  325. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  326. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  328. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  330. package/contracts/experiment/cloning/Cloner.sol +0 -47
  331. package/contracts/experiment/errors/Require.sol +0 -38
  332. package/contracts/experiment/errors/Revert.sol +0 -44
  333. package/contracts/experiment/inheritance/A.sol +0 -53
  334. package/contracts/experiment/inheritance/B.sol +0 -28
  335. package/contracts/experiment/inheritance/C.sol +0 -34
  336. package/contracts/experiment/inheritance/IA.sol +0 -13
  337. package/contracts/experiment/inheritance/IB.sol +0 -10
  338. package/contracts/experiment/inheritance/IC.sol +0 -12
  339. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  340. package/contracts/experiment/statemachine/ISM.sol +0 -25
  341. package/contracts/experiment/statemachine/SM.sol +0 -57
  342. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  343. package/contracts/experiment/types/TypeA.sol +0 -47
  344. package/contracts/experiment/types/TypeB.sol +0 -29
@@ -17,6 +17,7 @@ import {StateId} from "../types/StateId.sol";
17
17
 
18
18
  import {IRegistry} from "../registry/IRegistry.sol";
19
19
  import {IBundle} from "../instance/module/IBundle.sol";
20
+ import {IComponents} from "../instance/module/IComponents.sol";
20
21
  import {IDistribution} from "../instance/module/IDistribution.sol";
21
22
  import {IInstance} from "./IInstance.sol";
22
23
  import {IKeyValueStore} from "../instance/base/IKeyValueStore.sol";
@@ -30,19 +31,15 @@ import {TimestampLib} from "../types/Timestamp.sol";
30
31
  contract InstanceReader {
31
32
  bool private _initialized;
32
33
 
33
- IRegistry internal _registry;
34
34
  IInstance internal _instance;
35
35
  IKeyValueStore internal _store;
36
36
 
37
- function initialize(address registry, address instance) public {
37
+ function initialize(address instance) public {
38
38
  require(!_initialized, "ERROR:CRD-000:ALREADY_INITIALIZED");
39
39
 
40
40
  require(
41
- address(registry) != address(0),
42
- "ERROR:CRD-001:REGISTRY_ZERO");
43
-
44
-
45
- _registry = IRegistry(registry);
41
+ address(instance) != address(0),
42
+ "ERROR:CRD-001:INSTANCE_ZERO");
46
43
 
47
44
  _instance = IInstance(instance);
48
45
  _store = IKeyValueStore(instance);
@@ -151,14 +148,14 @@ contract InstanceReader {
151
148
  }
152
149
  }
153
150
 
154
- function getPoolSetupInfo(NftId poolNftId)
151
+ function getComponentInfo(NftId poolNftId)
155
152
  public
156
153
  view
157
- returns (ISetup.PoolSetupInfo memory info)
154
+ returns (IComponents.ComponentInfo memory info)
158
155
  {
159
156
  bytes memory data = _store.getData(toPoolKey(poolNftId));
160
157
  if (data.length > 0) {
161
- return abi.decode(data, (ISetup.PoolSetupInfo));
158
+ return abi.decode(data, (IComponents.ComponentInfo));
162
159
  }
163
160
  }
164
161
 
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
5
6
 
6
7
  import {Instance} from "./Instance.sol";
7
8
  import {IInstance} from "./IInstance.sol";
@@ -9,6 +10,7 @@ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
9
10
  import {IInstanceService} from "./IInstanceService.sol";
10
11
  import {InstanceReader} from "./InstanceReader.sol";
11
12
  import {BundleManager} from "./BundleManager.sol";
13
+ import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
12
14
  import {IRegistry} from "../registry/IRegistry.sol";
13
15
  import {IRegistryService} from "../registry/IRegistryService.sol";
14
16
  import {ChainNft} from "../registry/ChainNft.sol";
@@ -16,14 +18,17 @@ import {Service} from "../../contracts/shared/Service.sol";
16
18
  import {IService} from "../shared/IService.sol";
17
19
  import {NftId} from "../../contracts/types/NftId.sol";
18
20
  import {RoleId} from "../types/RoleId.sol";
19
- import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, POLICY_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
20
- import {ObjectType, INSTANCE, BUNDLE, POLICY, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
21
+ import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../types/RoleId.sol";
22
+ import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
21
23
  import {IDistributionComponent} from "../components/IDistributionComponent.sol";
22
24
  import {IPoolComponent} from "../components/IPoolComponent.sol";
23
25
  import {IProductComponent} from "../components/IProductComponent.sol";
24
26
 
25
- contract InstanceService is Service, IInstanceService {
26
-
27
+ contract InstanceService is
28
+ Service,
29
+ IInstanceService
30
+ {
31
+ address internal _masterOzAccessManager;
27
32
  address internal _masterInstanceAccessManager;
28
33
  address internal _masterInstance;
29
34
  address internal _masterInstanceReader;
@@ -32,20 +37,24 @@ contract InstanceService is Service, IInstanceService {
32
37
  // TODO update to real hash when instance is stable
33
38
  bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
34
39
 
35
- modifier onlyInstanceOwner(NftId instanceNftId) {
36
- IRegistry registry = getRegistry();
37
- ChainNft chainNft = ChainNft(registry.getChainNftAddress());
38
-
39
- if( msg.sender != chainNft.ownerOf(instanceNftId.toInt())) {
40
- revert ErrorInstanceServiceNotInstanceOwner(msg.sender, instanceNftId);
40
+ modifier onlyInstanceOwner(NftId instanceNftId) {
41
+ if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
42
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
41
43
  }
42
44
  _;
43
45
  }
44
-
46
+ // TODO check service domain?
47
+ // TODO check release version?
45
48
  modifier onlyRegisteredService() {
46
- address caller = msg.sender;
47
- if (! getRegistry().isRegisteredService(caller)) {
48
- revert ErrorInstanceServiceRequestUnauhorized(caller);
49
+ if (! getRegistry().isRegisteredService(msg.sender)) {
50
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
51
+ }
52
+ _;
53
+ }
54
+ // TODO check release version?
55
+ modifier onlyComponent() {
56
+ if (! getRegistry().isRegisteredComponent(msg.sender)) {
57
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
49
58
  }
50
59
  _;
51
60
  }
@@ -53,7 +62,8 @@ contract InstanceService is Service, IInstanceService {
53
62
  function createInstanceClone()
54
63
  external
55
64
  returns (
56
- InstanceAccessManager clonedAccessManager,
65
+ AccessManagerUpgradeableInitializeable clonedOzAccessManager,
66
+ InstanceAccessManager clonedInstanceAccessManager,
57
67
  Instance clonedInstance,
58
68
  NftId clonedInstanceNftId,
59
69
  InstanceReader clonedInstanceReader,
@@ -67,78 +77,113 @@ contract InstanceService is Service, IInstanceService {
67
77
  address registryServiceAddress = registry.getServiceAddress(REGISTRY(), getMajorVersion());
68
78
  IRegistryService registryService = IRegistryService(registryServiceAddress);
69
79
 
70
- // initially set the authority of the access managar to this (being the instance service).
71
- // This will allow the instance service to bootstrap the authorizations of the instance
72
- // and then transfer the ownership of the access manager to the instance owner once everything is setup
73
- clonedAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
74
- clonedAccessManager.initialize(address(this));
80
+ clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
81
+ Clones.clone(_masterOzAccessManager));
82
+
83
+ // initially grants ADMIN_ROLE to this (being the instance service).
84
+ // This will allow the instance service to bootstrap the authorizations of the instance.
85
+ // Instance service will not use oz access manager directlly but through instance access manager instead
86
+ // Instance service will renounce ADMIN_ROLE when bootstraping is finished
87
+ clonedOzAccessManager.initialize(address(this));
75
88
 
76
89
  clonedInstance = Instance(Clones.clone(_masterInstance));
77
- clonedInstance.initialize(address(clonedAccessManager), registryAddress, registryNftId, msg.sender);
90
+ clonedInstance.initialize(
91
+ address(clonedOzAccessManager),
92
+ registryAddress,
93
+ instanceOwner);
78
94
 
79
95
  clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
80
- clonedInstanceReader.initialize(registryAddress, address(clonedInstance));
96
+ clonedInstanceReader.initialize(address(clonedInstance));
81
97
  clonedInstance.setInstanceReader(clonedInstanceReader);
82
98
 
83
99
  clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
84
- clonedBundleManager.initialize(address(clonedAccessManager), registryAddress, address(clonedInstance));
100
+ clonedBundleManager.initialize(address(clonedInstance));
85
101
  clonedInstance.setBundleManager(clonedBundleManager);
86
102
 
103
+ clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
104
+ clonedOzAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAccessManager), 0);
105
+ clonedInstanceAccessManager.initialize(address(clonedInstance));
106
+ clonedInstance.setInstanceAccessManager(clonedInstanceAccessManager);
107
+
87
108
  // TODO amend setters with instance specific , policy manager ...
88
109
 
89
- _grantInitialAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
110
+ _grantInitialAuthorizations(clonedInstanceAccessManager, clonedInstance, clonedBundleManager, instanceOwner);
90
111
 
91
- // to complete setup switch instance ownership to the instance owner
92
- // TODO: use a role less powerful than admin, maybe INSTANCE_ADMIN (does not exist yet)
93
- clonedAccessManager.grantRole(ADMIN_ROLE(), instanceOwner);
94
- clonedAccessManager.revokeRole(ADMIN_ROLE(), address(this));
112
+ clonedOzAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
95
113
 
96
114
  IRegistry.ObjectInfo memory info = registryService.registerInstance(clonedInstance, instanceOwner);
97
115
  clonedInstanceNftId = info.nftId;
98
116
  // clonedInstance.linkToRegisteredNftId();
99
117
 
100
- emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
118
+ emit LogInstanceCloned(
119
+ address(clonedOzAccessManager),
120
+ address(clonedInstanceAccessManager),
121
+ address(clonedInstance),
122
+ address(clonedBundleManager),
123
+ address(clonedInstanceReader),
124
+ clonedInstanceNftId);
101
125
  }
102
126
 
103
- function _grantInitialAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
104
- _createGifRoles(clonedAccessManager);
105
- _createGifTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
127
+ function _grantInitialAuthorizations(
128
+ InstanceAccessManager clonedAccessManager,
129
+ Instance clonedInstance,
130
+ BundleManager clonedBundleManager,
131
+ address instanceOwner)
132
+ internal
133
+ {
134
+ _createCoreAndGifRoles(clonedAccessManager);
135
+ _createCoreTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
106
136
  _grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
107
137
  _grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
108
138
  _grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
139
+ _grantApplicationServiceAuthorizations(clonedAccessManager, clonedInstance);
109
140
  _grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
141
+ _grantClaimServiceAuthorizations(clonedAccessManager, clonedInstance);
110
142
  _grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
111
143
  _grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
144
+ _grantInstanceOwnerAuthorizations(clonedAccessManager, instanceOwner);
112
145
  }
113
146
 
114
- function _createGifRoles(InstanceAccessManager clonedAccessManager) internal {
115
- clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole");
116
- clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole");
117
- clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole");
118
-
119
- clonedAccessManager.createGifRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
120
- clonedAccessManager.createGifRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
121
- clonedAccessManager.createGifRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
122
- clonedAccessManager.createGifRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
123
- clonedAccessManager.createGifRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
124
- clonedAccessManager.createGifRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
147
+ function _createCoreAndGifRoles(InstanceAccessManager clonedAccessManager) internal {
148
+ // default roles controlled by ADMIN_ROLE -> core roles
149
+ // all set/granted only once during cloning (the only exception is INSTANCE_OWNER_ROLE, hooked to instance nft)
150
+ clonedAccessManager.createCoreRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
151
+ clonedAccessManager.createCoreRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
152
+ clonedAccessManager.createCoreRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
153
+ clonedAccessManager.createCoreRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
154
+ clonedAccessManager.createCoreRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
155
+ clonedAccessManager.createCoreRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
156
+ clonedAccessManager.createCoreRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
157
+ clonedAccessManager.createCoreRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
158
+ // default roles controlled by INSTANCE_OWNER_ROLE -> gif roles
159
+ clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole", INSTANCE_OWNER_ROLE());
160
+ clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole", INSTANCE_OWNER_ROLE());
161
+ clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole", INSTANCE_OWNER_ROLE());
125
162
  }
126
163
 
127
- function _createGifTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
128
- clonedAccessManager.createGifTarget(address(clonedAccessManager), "InstanceAccessManager");
129
- clonedAccessManager.createGifTarget(address(clonedInstance), "Instance");
130
- clonedAccessManager.createGifTarget(address(clonedBundleManager), "BundleManager");
164
+ function _createCoreTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
165
+ clonedAccessManager.createCoreTarget(address(clonedAccessManager), "InstanceAccessManager");
166
+ clonedAccessManager.createCoreTarget(address(clonedInstance), "Instance");
167
+ clonedAccessManager.createCoreTarget(address(clonedBundleManager), "BundleManager");
131
168
  }
132
169
 
133
170
  function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
134
171
  // configure authorization for distribution service on instance
135
- IRegistry registry = getRegistry();
136
- address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
172
+ address distributionServiceAddress = getRegistry().getServiceAddress(DISTRIBUTION(), getMajorVersion());
137
173
  clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
138
- bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](2);
174
+ bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
139
175
  instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
140
176
  instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
141
- clonedAccessManager.setTargetFunctionRole(
177
+ instanceDistributionServiceSelectors[2] = clonedInstance.createDistributorType.selector;
178
+ instanceDistributionServiceSelectors[3] = clonedInstance.updateDistributorType.selector;
179
+ instanceDistributionServiceSelectors[4] = clonedInstance.updateDistributorTypeState.selector;
180
+ instanceDistributionServiceSelectors[5] = clonedInstance.createDistributor.selector;
181
+ instanceDistributionServiceSelectors[6] = clonedInstance.updateDistributor.selector;
182
+ instanceDistributionServiceSelectors[7] = clonedInstance.updateDistributorState.selector;
183
+ instanceDistributionServiceSelectors[8] = clonedInstance.createReferral.selector;
184
+ instanceDistributionServiceSelectors[9] = clonedInstance.updateReferral.selector;
185
+ instanceDistributionServiceSelectors[10] = clonedInstance.updateReferralState.selector;
186
+ clonedAccessManager.setCoreTargetFunctionRole(
142
187
  "Instance",
143
188
  instanceDistributionServiceSelectors,
144
189
  DISTRIBUTION_SERVICE_ROLE());
@@ -151,7 +196,7 @@ contract InstanceService is Service, IInstanceService {
151
196
  bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
152
197
  instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
153
198
  instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
154
- clonedAccessManager.setTargetFunctionRole(
199
+ clonedAccessManager.setCoreTargetFunctionRole(
155
200
  "Instance",
156
201
  instancePoolServiceSelectors,
157
202
  POOL_SERVICE_ROLE());
@@ -167,34 +212,62 @@ contract InstanceService is Service, IInstanceService {
167
212
  instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
168
213
  instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
169
214
  instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
170
- clonedAccessManager.setTargetFunctionRole(
215
+ clonedAccessManager.setCoreTargetFunctionRole(
171
216
  "Instance",
172
217
  instanceProductServiceSelectors,
173
218
  PRODUCT_SERVICE_ROLE());
174
219
  }
175
220
 
221
+ function _grantApplicationServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
222
+ // configure authorization for application services on instance
223
+ address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getMajorVersion());
224
+ clonedAccessManager.grantRole(APPLICATION_SERVICE_ROLE(), applicationServiceAddress);
225
+ bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
226
+ instanceApplicationServiceSelectors[0] = clonedInstance.createApplication.selector;
227
+ instanceApplicationServiceSelectors[1] = clonedInstance.updateApplication.selector;
228
+ instanceApplicationServiceSelectors[2] = clonedInstance.updateApplicationState.selector;
229
+ clonedAccessManager.setCoreTargetFunctionRole(
230
+ "Instance",
231
+ instanceApplicationServiceSelectors,
232
+ APPLICATION_SERVICE_ROLE());
233
+ }
234
+
176
235
  function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
177
- // configure authorization for policy service on instance
236
+ // configure authorization for policy services on instance
178
237
  address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getMajorVersion());
179
- clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), address(policyServiceAddress));
180
- bytes4[] memory instancePolicyServiceSelectors = new bytes4[](3);
181
- instancePolicyServiceSelectors[0] = clonedInstance.createPolicy.selector;
182
- instancePolicyServiceSelectors[1] = clonedInstance.updatePolicy.selector;
183
- instancePolicyServiceSelectors[2] = clonedInstance.updatePolicyState.selector;
184
- clonedAccessManager.setTargetFunctionRole(
238
+ clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), policyServiceAddress);
239
+ bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
240
+ instancePolicyServiceSelectors[0] = clonedInstance.updatePolicy.selector;
241
+ instancePolicyServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
242
+ clonedAccessManager.setCoreTargetFunctionRole(
185
243
  "Instance",
186
244
  instancePolicyServiceSelectors,
187
245
  POLICY_SERVICE_ROLE());
188
246
  }
189
247
 
248
+ function _grantClaimServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
249
+ // configure authorization for claim/payout services on instance
250
+ address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getMajorVersion());
251
+ clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), claimServiceAddress);
252
+ // TODO add claims function authz
253
+ bytes4[] memory instanceClaimServiceSelectors = new bytes4[](0);
254
+ // instanceClaimServiceSelectors[0] = clonedInstance.updatePolicy.selector;
255
+ // instanceClaimServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
256
+ clonedAccessManager.setCoreTargetFunctionRole(
257
+ "Instance",
258
+ instanceClaimServiceSelectors,
259
+ CLAIM_SERVICE_ROLE());
260
+ }
261
+
190
262
  function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
191
263
  // configure authorization for bundle service on instance
192
264
  address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getMajorVersion());
193
265
  clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
194
- bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
266
+ bytes4[] memory instanceBundleServiceSelectors = new bytes4[](3);
195
267
  instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
196
268
  instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
197
- clonedAccessManager.setTargetFunctionRole(
269
+ instanceBundleServiceSelectors[2] = clonedInstance.updateBundleState.selector;
270
+ clonedAccessManager.setCoreTargetFunctionRole(
198
271
  "Instance",
199
272
  instanceBundleServiceSelectors,
200
273
  BUNDLE_SERVICE_ROLE());
@@ -206,59 +279,82 @@ contract InstanceService is Service, IInstanceService {
206
279
  bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
207
280
  bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
208
281
  bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
209
- clonedAccessManager.setTargetFunctionRole(
282
+ clonedAccessManager.setCoreTargetFunctionRole(
210
283
  "BundleManager",
211
284
  bundleManagerBundleServiceSelectors,
212
285
  BUNDLE_SERVICE_ROLE());
213
286
  }
214
287
 
215
288
  function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
216
- // configure authorization for instance service on instance
289
+ // configure authorization for instance service on instance
217
290
  address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getMajorVersion());
218
291
  clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
219
292
  bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
220
293
  instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
221
- clonedAccessManager.setTargetFunctionRole(
294
+ clonedAccessManager.setCoreTargetFunctionRole(
222
295
  "Instance",
223
296
  instanceInstanceServiceSelectors,
224
297
  INSTANCE_SERVICE_ROLE());
225
298
 
226
- bytes4[] memory instanceAccessManagerInstanceServiceSelectors = new bytes4[](1);
227
- instanceAccessManagerInstanceServiceSelectors[0] = clonedAccessManager.createGifTarget.selector;
228
- clonedAccessManager.setTargetFunctionRole(
299
+ // configure authorizations for instance service on instance access manager
300
+ bytes4[] memory accessManagerInstanceServiceSelectors = new bytes4[](3);
301
+ accessManagerInstanceServiceSelectors[0] = clonedAccessManager.createGifTarget.selector;
302
+ accessManagerInstanceServiceSelectors[1] = clonedAccessManager.setTargetLocked.selector;
303
+ accessManagerInstanceServiceSelectors[2] = clonedAccessManager.setCoreTargetFunctionRole.selector;
304
+ clonedAccessManager.setCoreTargetFunctionRole(
229
305
  "InstanceAccessManager",
230
- instanceAccessManagerInstanceServiceSelectors,
306
+ accessManagerInstanceServiceSelectors,
231
307
  INSTANCE_SERVICE_ROLE());
232
308
  }
233
309
 
310
+ function _grantInstanceOwnerAuthorizations(InstanceAccessManager clonedAccessManager, address instanceOwner) internal {
311
+ // configure authorization for instance owner on instance access manager
312
+ // instance owner role is granted/revoked ONLY by INSTANCE_ROLE
313
+ bytes4[] memory accessManagerInstanceOwnerSelectors = new bytes4[](3);
314
+ accessManagerInstanceOwnerSelectors[0] = clonedAccessManager.createRole.selector;
315
+ accessManagerInstanceOwnerSelectors[1] = clonedAccessManager.createTarget.selector;
316
+ accessManagerInstanceOwnerSelectors[2] = clonedAccessManager.setTargetFunctionRole.selector;
317
+ clonedAccessManager.setCoreTargetFunctionRole(
318
+ "InstanceAccessManager",
319
+ accessManagerInstanceOwnerSelectors,
320
+ INSTANCE_OWNER_ROLE());
321
+ }
322
+
323
+
234
324
  function setAndRegisterMasterInstance(address instanceAddress)
235
325
  external
236
326
  onlyOwner
237
327
  returns(NftId masterInstanceNftId)
238
328
  {
239
329
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
330
+ if(_masterOzAccessManager != address(0)) { revert ErrorInstanceServiceMasterOzAccessManagerAlreadySet(); }
240
331
  if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
241
332
  if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
242
333
 
243
334
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
244
335
 
245
336
  IInstance instance = IInstance(instanceAddress);
246
- InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
247
- address accessManagerAddress = address(accessManager);
337
+ AccessManagerUpgradeableInitializeable ozAccessManager = AccessManagerUpgradeableInitializeable(instance.authority());
338
+ address ozAccessManagerAddress = address(ozAccessManager);
339
+ InstanceAccessManager instanceAccessManager = instance.getInstanceAccessManager();
340
+ address instanceAccessManagerAddress = address(instanceAccessManager);
248
341
  InstanceReader instanceReader = instance.getInstanceReader();
249
342
  address instanceReaderAddress = address(instanceReader);
250
343
  BundleManager bundleManager = instance.getBundleManager();
251
344
  address bundleManagerAddress = address(bundleManager);
252
345
 
253
- if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
346
+ if(ozAccessManagerAddress == address(0)) { revert ErrorInstanceServiceOzAccessManagerZero();}
347
+ if(instanceAccessManagerAddress == address(0)) { revert ErrorInstanceServiceInstanceAccessManagerZero(); }
254
348
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
255
349
  if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
256
350
 
257
- if(instance.authority() != accessManagerAddress) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
351
+ if(instance.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
352
+ if(bundleManager.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
258
353
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
259
354
  if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
260
355
 
261
- _masterInstanceAccessManager = accessManagerAddress;
356
+ _masterOzAccessManager = ozAccessManagerAddress;
357
+ _masterInstanceAccessManager = instanceAccessManagerAddress;
262
358
  _masterInstance = instanceAddress;
263
359
  _masterInstanceReader = instanceReaderAddress;
264
360
  _masterInstanceBundleManager = bundleManagerAddress;
@@ -282,19 +378,16 @@ contract InstanceService is Service, IInstanceService {
282
378
  _masterInstanceReader = instanceReaderAddress;
283
379
  }
284
380
 
285
- // TODO access restriction
286
- function upgradeInstanceReader(NftId instanceNftId) external {
381
+ function upgradeInstanceReader(NftId instanceNftId)
382
+ external
383
+ onlyInstanceOwner(instanceNftId)
384
+ {
287
385
  IRegistry registry = getRegistry();
288
386
  IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
289
387
  Instance instance = Instance(instanceInfo.objectAddress);
290
- address owner = instance.getOwner();
291
-
292
- if (msg.sender != owner) {
293
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
294
- }
295
388
 
296
389
  InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
297
- upgradedInstanceReaderClone.initialize(address(registry), address(instance));
390
+ upgradedInstanceReaderClone.initialize(address(instance));
298
391
  instance.setInstanceReader(upgradedInstanceReaderClone);
299
392
  }
300
393
 
@@ -337,97 +430,66 @@ contract InstanceService is Service, IInstanceService {
337
430
  registerInterface(type(IInstanceService).interfaceId);
338
431
  }
339
432
 
340
- function hasRole(address account, RoleId role, address instanceAddress) public view returns (bool) {
341
- Instance instance = Instance(instanceAddress);
342
- InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
343
- return accessManager.hasRole(role, account);
344
- }
433
+ // all gif targets MUST be childs of instanceNftId
434
+ function createGifTarget(
435
+ NftId instanceNftId,
436
+ address targetAddress,
437
+ string memory targetName,
438
+ bytes4[][] memory selectors,
439
+ RoleId[] memory roles
440
+ )
441
+ external
442
+ onlyRegisteredService
443
+ {
444
+ (
445
+ IInstance instance, // or instanceInfo
446
+ NftId targetNftId // or targetInfo
447
+ ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
345
448
 
346
- function createGifTarget(NftId instanceNftId, address targetAddress, string memory targetName) external onlyRegisteredService {
347
- IRegistry registry = getRegistry();
348
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
349
- Instance instance = Instance(instanceInfo.objectAddress);
350
- InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
449
+ InstanceAccessManager accessManager = instance.getInstanceAccessManager();
351
450
  accessManager.createGifTarget(targetAddress, targetName);
352
- }
353
-
354
- function grantDistributionDefaultPermissions(NftId instanceNftId, address distributionAddress, string memory distributionName) external onlyRegisteredService {
355
- IRegistry registry = getRegistry();
356
- IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionAddress);
357
-
358
- if (distributionInfo.objectType != DISTRIBUTION()) {
359
- revert ErrorInstanceServiceInvalidComponentType(distributionAddress, DISTRIBUTION(), distributionInfo.objectType);
451
+ // set proposed target config
452
+ // TODO restriction: for gif targets can set only once and only here?
453
+ // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
454
+ for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++)
455
+ {
456
+ accessManager.setCoreTargetFunctionRole(targetName, selectors[roleIdx], roles[roleIdx]);
360
457
  }
361
-
362
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
363
- Instance instance = Instance(instanceInfo.objectAddress);
364
- InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
365
-
366
- bytes4[] memory fctSelectors = new bytes4[](1);
367
- fctSelectors[0] = IDistributionComponent.setFees.selector;
368
- instanceAccessManager.setTargetFunctionRole(distributionName, fctSelectors, DISTRIBUTION_OWNER_ROLE());
369
-
370
- bytes4[] memory fctSelectors2 = new bytes4[](2);
371
- fctSelectors2[0] = IDistributionComponent.processSale.selector;
372
- fctSelectors2[1] = IDistributionComponent.processRenewal.selector;
373
- instanceAccessManager.setTargetFunctionRole(distributionName, fctSelectors2, PRODUCT_SERVICE_ROLE());
374
458
  }
375
459
 
376
- function grantPoolDefaultPermissions(NftId instanceNftId, address poolAddress, string memory poolName) external onlyRegisteredService {
460
+ // TODO called by component, but target can be component helper...so needs target name
461
+ // TODO check that targetName associated with component...how???
462
+ //function setTargetLocked(string memory targetName, bool locked) onlyComponent external {
463
+ function setComponentLocked(bool locked) onlyComponent external {
464
+ address componentAddress = msg.sender;
377
465
  IRegistry registry = getRegistry();
378
- IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(poolAddress);
379
-
380
- if (poolInfo.objectType != POOL()) {
381
- revert ErrorInstanceServiceInvalidComponentType(poolAddress, POOL(), poolInfo.objectType);
382
- }
383
-
384
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
385
- Instance instance = Instance(instanceInfo.objectAddress);
386
- InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
387
-
388
- bytes4[] memory fctSelectors = new bytes4[](1);
389
- fctSelectors[0] = IPoolComponent.setFees.selector;
390
- instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors, POOL_OWNER_ROLE());
466
+ NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
467
+ address instanceAddress = registry.getObjectInfo(instanceNftId).objectAddress;
468
+ IInstance instance = IInstance(instanceAddress);
391
469
 
392
- bytes4[] memory fctSelectors2 = new bytes4[](1);
393
- fctSelectors2[0] = IPoolComponent.verifyApplication.selector;
394
- instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors2, POLICY_SERVICE_ROLE());
470
+ InstanceAccessManager accessManager = instance.getInstanceAccessManager();
471
+ // TODO setLocked by target address?
472
+ string memory componentName = ShortStrings.toString(accessManager.getTargetInfo(componentAddress).name);
473
+ accessManager.setTargetLocked(componentName, locked);
395
474
  }
396
475
 
397
- function grantProductDefaultPermissions(NftId instanceNftId, address productAddress, string memory productName) external onlyRegisteredService {
476
+ function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
477
+ internal
478
+ view
479
+ returns (IInstance instance, NftId componentNftId)
480
+ {
398
481
  IRegistry registry = getRegistry();
399
- IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productAddress);
400
-
401
- if (productInfo.objectType != PRODUCT()) {
402
- revert ErrorInstanceServiceInvalidComponentType(productAddress, PRODUCT(), productInfo.objectType);
403
- }
404
-
405
482
  IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
406
- Instance instance = Instance(instanceInfo.objectAddress);
407
- InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
408
-
409
- bytes4[] memory fctSelectors = new bytes4[](1);
410
- fctSelectors[0] = IProductComponent.setFees.selector;
411
- instanceAccessManager.setTargetFunctionRole(productName, fctSelectors, PRODUCT_OWNER_ROLE());
412
- }
483
+ if(instanceInfo.objectType != INSTANCE()) {
484
+ revert ErrorInstanceServiceNotInstance(instanceNftId);
485
+ }
413
486
 
414
- function setTargetLocked(string memory targetName, bool locked) external {
415
- address componentAddress = msg.sender;
416
- IRegistry registry = getRegistry();
417
487
  IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
418
- if (componentInfo.nftId.eqz()) {
419
- revert ErrorInstanceServiceComponentNotRegistered(componentAddress);
488
+ if(componentInfo.parentNftId != instanceNftId) {
489
+ revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
420
490
  }
421
491
 
422
- // TODO validate component type
423
-
424
-
425
- address instanceAddress = registry.getObjectInfo(componentInfo.parentNftId).objectAddress;
426
- IInstance instance = IInstance(instanceAddress);
427
-
428
- InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
429
- accessManager.setTargetClosed(targetName, locked);
492
+ instance = Instance(instanceInfo.objectAddress);
493
+ componentNftId = componentInfo.nftId;
430
494
  }
431
-
432
- }
433
-
495
+ }
@@ -17,7 +17,7 @@ contract InstanceServiceManager is ProxyManager {
17
17
  constructor(
18
18
  address registryAddress
19
19
  )
20
- ProxyManager()
20
+ ProxyManager(registryAddress)
21
21
  {
22
22
  InstanceService instSrv = new InstanceService();
23
23
  // bytes memory initCode = type(InstanceService).creationCode;