@etherisc/gif-next 0.0.2-e1e92ab-754 → 0.0.2-e26c262-698

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 (454) hide show
  1. package/README.md +232 -2
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +832 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +954 -192
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → components/IComponent.sol/IComponent.json} +192 -168
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +719 -27
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +773 -127
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +556 -33
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +906 -266
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +702 -159
  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 +1415 -1008
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +567 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2129 -1194
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1311 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1279 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1033 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +701 -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/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +203 -195
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +67 -245
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  51. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{pool/IPoolModule.sol/IPool.json → IComponents.sol/IComponents.json} +2 -2
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  57. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  61. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  62. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  63. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  64. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  65. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +968 -0
  67. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  69. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1093 -0
  71. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  73. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  75. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  77. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1341 -239
  79. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +805 -0
  81. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +556 -0
  83. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +630 -0
  85. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +150 -207
  87. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +727 -160
  89. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/instance/{base/ServiceBase.sol/ServiceBase.json → service/IPolicyService.sol/IPolicyService.json} +263 -191
  91. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +84 -217
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +47 -414
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1021 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +689 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +314 -243
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +657 -0
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +242 -533
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  107. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +60 -2
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +373 -61
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +234 -216
  113. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +333 -188
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +229 -297
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +312 -132
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  130. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  132. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  133. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
  134. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  136. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  137. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  138. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  139. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +59 -44
  140. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  142. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  144. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  146. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  148. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  150. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  152. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  153. package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/Service.sol/Service.json} +155 -151
  154. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  156. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  158. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  160. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  162. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  164. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  166. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestService.sol/TestService.json +148 -211
  168. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  171. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -174
  173. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  174. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  175. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  177. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  180. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  182. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/Fee.sol/FeeLib.json +2 -2
  184. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  185. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  186. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  188. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  189. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  190. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  192. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  194. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  196. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  198. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  200. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  202. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  204. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  206. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  208. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  210. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  212. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  214. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  215. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  216. package/contracts/components/Component.sol +251 -0
  217. package/contracts/components/Distribution.sol +204 -79
  218. package/contracts/components/IComponent.sol +74 -0
  219. package/contracts/components/IDistributionComponent.sol +43 -18
  220. package/contracts/components/IPoolComponent.sol +88 -39
  221. package/contracts/components/IProductComponent.sol +12 -9
  222. package/contracts/components/Pool.sol +216 -163
  223. package/contracts/components/Product.sol +133 -139
  224. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  225. package/contracts/instance/BundleManager.sol +127 -0
  226. package/contracts/instance/Cloneable.sol +51 -0
  227. package/contracts/instance/IInstance.sol +85 -39
  228. package/contracts/instance/IInstanceService.sol +72 -0
  229. package/contracts/instance/Instance.sol +310 -66
  230. package/contracts/instance/InstanceAccessManager.sol +522 -0
  231. package/contracts/instance/InstanceReader.sol +290 -0
  232. package/contracts/instance/InstanceService.sol +495 -0
  233. package/contracts/instance/InstanceServiceManager.sol +54 -0
  234. package/contracts/instance/ObjectManager.sol +82 -0
  235. package/contracts/instance/base/ComponentService.sol +134 -0
  236. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  237. package/contracts/instance/base/ILifecycle.sol +3 -3
  238. package/contracts/instance/base/KeyValueStore.sol +52 -38
  239. package/contracts/instance/base/Lifecycle.sol +12 -3
  240. package/contracts/instance/module/IAccess.sol +54 -0
  241. package/contracts/instance/module/IBundle.sol +21 -0
  242. package/contracts/instance/module/IComponents.sol +35 -0
  243. package/contracts/instance/module/IDistribution.sol +41 -0
  244. package/contracts/instance/module/IPolicy.sol +72 -0
  245. package/contracts/instance/module/IRisk.sol +11 -0
  246. package/contracts/instance/module/ISetup.sol +33 -0
  247. package/contracts/instance/module/ITreasury.sol +23 -0
  248. package/contracts/instance/service/ApplicationService.sol +350 -0
  249. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  250. package/contracts/instance/service/BundleService.sol +336 -0
  251. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  252. package/contracts/instance/service/ClaimService.sol +151 -0
  253. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  254. package/contracts/instance/service/DistributionService.sol +435 -22
  255. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  256. package/contracts/instance/service/IApplicationService.sol +82 -0
  257. package/contracts/instance/service/IBundleService.sol +62 -0
  258. package/contracts/instance/service/IClaimService.sol +61 -0
  259. package/contracts/instance/service/IDistributionService.sol +87 -1
  260. package/contracts/instance/service/IPolicyService.sol +72 -0
  261. package/contracts/instance/service/IPoolService.sol +22 -24
  262. package/contracts/instance/service/IProductService.sol +9 -76
  263. package/contracts/instance/service/PolicyService.sol +403 -0
  264. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  265. package/contracts/instance/service/PoolService.sol +181 -110
  266. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  267. package/contracts/instance/service/ProductService.sol +163 -432
  268. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  269. package/contracts/registry/ChainNft.sol +47 -24
  270. package/contracts/registry/IRegistry.sol +52 -8
  271. package/contracts/registry/IRegistryService.sol +52 -20
  272. package/contracts/registry/ITransferInterceptor.sol +1 -0
  273. package/contracts/registry/Registry.sol +277 -236
  274. package/contracts/registry/RegistryAccessManager.sol +216 -0
  275. package/contracts/registry/RegistryService.sol +113 -271
  276. package/contracts/registry/RegistryServiceManager.sol +24 -25
  277. package/contracts/registry/ReleaseManager.sol +322 -0
  278. package/contracts/registry/TokenRegistry.sol +116 -0
  279. package/contracts/shared/ERC165.sol +14 -8
  280. package/contracts/shared/INftOwnable.sol +11 -10
  281. package/contracts/shared/IPolicyHolder.sol +26 -0
  282. package/contracts/shared/IRegisterable.sol +4 -6
  283. package/contracts/shared/IRegistryLinked.sol +12 -0
  284. package/contracts/shared/IService.sol +18 -0
  285. package/contracts/shared/IVersionable.sol +4 -47
  286. package/contracts/shared/NftOwnable.sol +67 -83
  287. package/contracts/shared/PolicyHolder.sol +81 -0
  288. package/contracts/shared/ProxyManager.sol +100 -25
  289. package/contracts/shared/Registerable.sol +16 -31
  290. package/contracts/shared/RegistryLinked.sol +48 -0
  291. package/contracts/shared/Service.sol +58 -0
  292. package/contracts/shared/TokenHandler.sol +33 -0
  293. package/contracts/shared/Versionable.sol +4 -92
  294. package/contracts/test/TestRegisterable.sol +1 -1
  295. package/contracts/test/TestRoleId.sol +1 -1
  296. package/contracts/test/TestService.sol +6 -7
  297. package/contracts/types/Blocknumber.sol +1 -0
  298. package/contracts/types/ClaimId.sol +52 -0
  299. package/contracts/types/DistributorType.sol +55 -0
  300. package/contracts/types/Fee.sol +1 -0
  301. package/contracts/types/Key32.sol +8 -3
  302. package/contracts/types/NftId.sol +8 -0
  303. package/contracts/types/NftIdSet.sol +26 -24
  304. package/contracts/types/NumberId.sol +52 -0
  305. package/contracts/types/ObjectType.sol +40 -14
  306. package/contracts/types/PayoutId.sol +54 -0
  307. package/contracts/types/Referral.sol +89 -0
  308. package/contracts/types/RoleId.sol +67 -15
  309. package/contracts/types/Seconds.sol +54 -0
  310. package/contracts/types/StateId.sol +6 -1
  311. package/contracts/types/Timestamp.sol +17 -13
  312. package/contracts/types/UFixed.sol +1 -0
  313. package/contracts/types/Version.sol +5 -1
  314. package/package.json +3 -3
  315. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  316. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -301
  317. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  318. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  319. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  320. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  321. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  322. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  323. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  324. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  325. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  326. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  328. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  330. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  332. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  334. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  337. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  339. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  341. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  343. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  345. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  347. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  349. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  351. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  352. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  353. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  354. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  355. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  356. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  357. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  358. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  359. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  360. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  361. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  362. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  363. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  364. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  365. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  366. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  367. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  368. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  369. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  370. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  371. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  372. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  373. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  375. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  376. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  378. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  380. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  381. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  383. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  384. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  385. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  388. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  389. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  390. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  393. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  394. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  395. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  396. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  397. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  398. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  399. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  400. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  401. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  402. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  403. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
  404. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  405. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
  406. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  407. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
  408. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  409. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  410. package/contracts/components/BaseComponent.sol +0 -79
  411. package/contracts/components/IBaseComponent.sol +0 -19
  412. package/contracts/experiment/errors/Require.sol +0 -38
  413. package/contracts/experiment/errors/Revert.sol +0 -44
  414. package/contracts/experiment/inheritance/A.sol +0 -53
  415. package/contracts/experiment/inheritance/B.sol +0 -28
  416. package/contracts/experiment/inheritance/C.sol +0 -34
  417. package/contracts/experiment/inheritance/IA.sol +0 -13
  418. package/contracts/experiment/inheritance/IB.sol +0 -10
  419. package/contracts/experiment/inheritance/IC.sol +0 -12
  420. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  421. package/contracts/experiment/statemachine/ISM.sol +0 -25
  422. package/contracts/experiment/statemachine/SM.sol +0 -57
  423. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  424. package/contracts/experiment/types/TypeA.sol +0 -47
  425. package/contracts/experiment/types/TypeB.sol +0 -29
  426. package/contracts/instance/IInstanceLinked.sol +0 -8
  427. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  428. package/contracts/instance/base/IInstanceBase.sol +0 -23
  429. package/contracts/instance/base/IService.sol +0 -15
  430. package/contracts/instance/base/InstanceBase.sol +0 -89
  431. package/contracts/instance/base/ModuleBase.sol +0 -57
  432. package/contracts/instance/base/ServiceBase.sol +0 -44
  433. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  434. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  435. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  436. package/contracts/instance/module/component/IComponent.sol +0 -28
  437. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  438. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  439. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  440. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  441. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  442. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  443. package/contracts/instance/module/risk/IRisk.sol +0 -26
  444. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  445. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  446. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  447. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  448. package/contracts/instance/service/ComponentOwnerService.sol +0 -315
  449. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  450. package/contracts/registry/IChainNft.sol +0 -22
  451. package/contracts/test/TestDistribution.sol +0 -22
  452. package/contracts/test/TestPool.sol +0 -27
  453. package/contracts/test/TestProduct.sol +0 -74
  454. package/contracts/types/ReferralId.sol +0 -48
@@ -1,18 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
4
  import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
6
- import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
7
5
  import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
8
6
 
9
7
  import {IRegistry} from "./IRegistry.sol";
10
8
  import {IInstance} from "../instance/IInstance.sol";
11
9
 
12
10
  import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
13
- import {IComponent, IComponentModule} from "../../contracts/instance/module/component/IComponent.sol";
14
- import {IPool} from "../../contracts/instance/module/pool/IPoolModule.sol";
15
- import {IBaseComponent} from "../../contracts/components/IBaseComponent.sol";
11
+ import {IComponent} from "../../contracts/components/IComponent.sol";
16
12
  import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
17
13
  import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
18
14
  import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
@@ -20,170 +16,79 @@ import {IDistributionComponent} from "../../contracts/components/IDistributionCo
20
16
  import {IVersionable} from "../../contracts/shared/IVersionable.sol";
21
17
  import {Versionable} from "../../contracts/shared/Versionable.sol";
22
18
  import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
19
+ import {Registerable} from "../../contracts/shared/Registerable.sol";
23
20
 
24
21
  import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
25
- import {ObjectType, REGISTRY, TOKEN, SERVICE, PRODUCT, ORACLE, POOL, TOKEN, INSTANCE, DISTRIBUTION, POLICY, BUNDLE} from "../../contracts/types/ObjectType.sol";
22
+ import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
26
23
  import {StateId, ACTIVE, PAUSED} from "../../contracts/types/StateId.sol";
27
24
  import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
28
25
  import {Fee, FeeLib} from "../../contracts/types/Fee.sol";
29
26
  import {Version, VersionPart, VersionLib} from "../../contracts/types/Version.sol";
30
27
 
31
- import {ServiceBase} from "../../contracts/instance/base/ServiceBase.sol";
32
- import {IService} from "../../contracts/instance/base/IService.sol";
28
+ import {Service} from "../shared/Service.sol";
29
+ import {IService} from "../shared/IService.sol";
33
30
  import {IRegistryService} from "./IRegistryService.sol";
34
31
  import {Registry} from "./Registry.sol";
35
- import {ChainNft} from "./ChainNft.sol";
36
32
 
37
33
  contract RegistryService is
38
34
  AccessManagedUpgradeable,
39
- ServiceBase,
35
+ Service,
40
36
  IRegistryService
41
37
  {
42
38
  using NftIdLib for NftId;
43
39
 
44
- error SelfRegistration();
45
- error NotRegistryOwner();
46
-
47
- error NotToken();
48
- error NotService();
49
- error NotInstance();
50
- error NotProduct();
51
- error NotPool();
52
- error NotDistribution();
53
-
54
- error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
55
- error NotRegisterableOwner(address expectedOwner);
56
- error RegisterableOwnerIsZero();
57
- error RegisterableOwnerIsRegistered();
58
- error InvalidInitialOwner(address initialOwner);
59
- error InvalidAddress(address registerableAddress);
60
-
61
-
62
- // Initial value for constant variable has to be compile-time constant
63
- // TODO define types as constants?
64
- //ObjectType public constant SERVICE_TYPE = REGISTRY();
65
- string public constant NAME = "RegistryService";
66
-
67
40
  // TODO update to real hash when registry is stable
68
41
  bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
69
42
 
70
- address public constant NFT_LOCK_ADDRESS = address(0x1);
71
-
72
- /// @dev
73
- // msg.sender - ONLY registry owner
74
- // CAN NOT register itself
75
- // CAN NOT register IRegisterable address
76
- // CAN register ONLY valid object-parent types combinations for TOKEN
77
- // IMPORTANT: MUST NOT call untrusted contract inbetween calls to registry/instance (trusted contracts)
78
- // motivation: registry/instance state may change during external call
79
- // TODO it may be usefull to have transferable token nft in order to delist token, make it invalid for new beginings
80
- // TODO: MUST prohibit registration of precompiles addresses
81
- function registerToken(address tokenAddress)
82
- external
83
- returns(NftId nftId)
84
- {
85
- if(msg.sender == tokenAddress) {
86
- revert SelfRegistration();
87
- }
88
-
89
- // MUST not revert if no ERC165 support
90
- if(tokenAddress.code.length == 0 ||
91
- ERC165Checker.supportsInterface(tokenAddress, type(IRegisterable).interfaceId)) {
92
- revert NotToken();
93
- }
94
-
95
- NftId registryNftId = _registry.getNftId(address(_registry));
96
-
97
- if(msg.sender != _registry.ownerOf(registryNftId)) {
98
- revert NotRegistryOwner();
99
- }
100
-
101
- IRegistry.ObjectInfo memory info = IRegistry.ObjectInfo(
102
- zeroNftId(), // any value
103
- registryNftId, // parent nft id
104
- TOKEN(),
105
- false, // isInterceptor
106
- tokenAddress,
107
- NFT_LOCK_ADDRESS,
108
- "" // any value
109
- );
110
-
111
- nftId = _registry.register(info);
43
+ // From IService
44
+ function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
45
+ return REGISTRY();
112
46
  }
113
47
 
114
- /// @dev
115
- // msg.sender - ONLY registry owner
116
- // CAN NOT register itself
117
- // CAN register ONLY valid object-parent types combinations for SERVICE
118
- // CAN register ONLY IRegisterable address he owns
119
- // IMPORTANT: MUST NOT check owner before calling external contract
120
- function registerService(IService service)
121
- external
122
- returns(
123
- IRegistry.ObjectInfo memory info,
124
- bytes memory data
125
- )
126
- {
127
-
128
- // CAN revert if no ERC165 support -> will revert with empty message
129
- if(!service.supportsInterface(type(IService).interfaceId)) {
130
- revert NotService();
131
- }
48
+ // from Versionable
132
49
 
50
+ /// @dev top level initializer
51
+ function _initialize(
52
+ address owner,
53
+ bytes memory data
54
+ )
55
+ internal
56
+ virtual override
57
+ initializer()
58
+ {
133
59
  (
134
- info,
135
- data
136
- ) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
60
+ address registryAddress,
61
+ address initialAuthority
62
+ ) = abi.decode(data, (address, address));
137
63
 
138
- if(msg.sender != _registry.getOwner()) {
139
- revert NotRegistryOwner();
140
- }
64
+ __AccessManaged_init(initialAuthority);
141
65
 
142
- info.nftId = _registry.register(info);
143
- service.linkToRegisteredNftId();
144
- return (
145
- info,
146
- data
147
- );
66
+ initializeService(registryAddress, owner);
67
+ registerInterface(type(IRegistryService).interfaceId);
148
68
  }
149
69
 
150
- // If msg.sender is approved service:
151
- // 1) add owner arg (service MUST pass it's msg.sender as owner)
152
- // 2) check service allowance
153
- // 3) comment self registrstion check
154
- //function registerInstance(IRegisterable instance, address owner)
155
- function registerInstance(IRegisterable instance)
70
+ function registerInstance(IRegisterable instance, address owner)
156
71
  external
72
+ restricted
157
73
  returns(
158
- IRegistry.ObjectInfo memory info,
159
- bytes memory data
74
+ IRegistry.ObjectInfo memory info
160
75
  )
161
76
  {
162
-
163
77
  if(!instance.supportsInterface(type(IInstance).interfaceId)) {
164
78
  revert NotInstance();
165
79
  }
166
80
 
167
- (
168
- info,
169
- data
170
- ) = _getAndVerifyContractInfo(instance, INSTANCE(), msg.sender);
81
+ info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
82
+ info.nftId = getRegistry().register(info);
171
83
 
172
- info.nftId = _registry.register(info);
173
84
  instance.linkToRegisteredNftId(); // asume safe
174
-
175
- return (
176
- info,
177
- data
178
- );
179
85
  }
180
86
 
181
- function registerProduct(IBaseComponent product, address owner)
87
+ function registerProduct(IComponent product, address owner)
182
88
  external
183
89
  restricted
184
90
  returns(
185
- IRegistry.ObjectInfo memory info,
186
- bytes memory data
91
+ IRegistry.ObjectInfo memory info
187
92
  )
188
93
  {
189
94
  // CAN revert if no ERC165 support -> will revert with empty message
@@ -191,77 +96,47 @@ contract RegistryService is
191
96
  revert NotProduct();
192
97
  }
193
98
 
194
- (
195
- info,
196
- data
197
- ) = _getAndVerifyContractInfo(product, PRODUCT(), owner);
198
-
199
- NftId serviceNftId = _registry.getNftId(msg.sender);
200
-
201
- info.nftId = _registry.register(info);
202
- // TODO unsafe, let component or its owner derive nftId latter, when state assumptions and modifications of GIF contracts are finished
203
- product.linkToRegisteredNftId();
204
-
205
- return (
206
- info,
207
- data
208
- );
99
+ info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
100
+ info.nftId = getRegistry().register(info);
209
101
  }
210
102
 
211
- function registerPool(IBaseComponent pool, address owner)
103
+ function registerPool(IComponent pool, address owner)
212
104
  external
213
105
  restricted
214
106
  returns(
215
- IRegistry.ObjectInfo memory info,
216
- bytes memory data
107
+ IRegistry.ObjectInfo memory info
217
108
  )
218
109
  {
219
110
  if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
220
111
  revert NotPool();
221
112
  }
222
113
 
223
- (
224
- info,
225
- data
226
- ) = _getAndVerifyContractInfo(pool, POOL(), owner);
227
-
228
- NftId serviceNftId = _registry.getNftId(msg.sender);
229
-
230
- info.nftId = _registry.register(info);
231
- pool.linkToRegisteredNftId();
232
-
233
- return (
234
- info,
235
- data
236
- );
114
+ info = _getAndVerifyContractInfo(pool, POOL(), owner);
115
+ info.nftId = getRegistry().register(info);
237
116
  }
238
117
 
239
- function registerDistribution(IBaseComponent distribution, address owner)
118
+ function registerDistribution(IComponent distribution, address owner)
240
119
  external
241
120
  restricted
242
121
  returns(
243
- IRegistry.ObjectInfo memory info,
244
- bytes memory data
122
+ IRegistry.ObjectInfo memory info
245
123
  )
246
124
  {
247
125
  if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
248
126
  revert NotDistribution();
249
127
  }
250
128
 
251
- (
252
- info,
253
- data
254
- ) = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
255
-
256
- NftId serviceNftId = _registry.getNftId(msg.sender);
257
-
258
- info.nftId = _registry.register(info);
259
- distribution.linkToRegisteredNftId();
129
+ info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
130
+ info.nftId = getRegistry().register(info);
131
+ }
260
132
 
261
- return (
262
- info,
263
- data
264
- );
133
+ function registerDistributor(IRegistry.ObjectInfo memory info)
134
+ external
135
+ restricted
136
+ returns(NftId nftId)
137
+ {
138
+ _verifyObjectInfo(info, DISTRIBUTOR());
139
+ nftId = getRegistry().register(info);
265
140
  }
266
141
 
267
142
  function registerPolicy(IRegistry.ObjectInfo memory info)
@@ -269,11 +144,9 @@ contract RegistryService is
269
144
  restricted
270
145
  returns(NftId nftId)
271
146
  {
272
- NftId senderNftId = _registry.getNftId(msg.sender);
273
-
274
147
  _verifyObjectInfo(info, POLICY());
275
148
 
276
- nftId = _registry.register(info);
149
+ nftId = getRegistry().register(info);
277
150
  }
278
151
 
279
152
  function registerBundle(IRegistry.ObjectInfo memory info)
@@ -281,85 +154,83 @@ contract RegistryService is
281
154
  restricted
282
155
  returns(NftId nftId)
283
156
  {
284
-
285
- NftId senderNftId = _registry.getNftId(msg.sender);
286
-
287
157
  _verifyObjectInfo(info, BUNDLE());
288
158
 
289
- nftId = _registry.register(info);
159
+ nftId = getRegistry().register(info);
290
160
  }
291
161
 
162
+ function registerStake(IRegistry.ObjectInfo memory info)
163
+ external
164
+ restricted
165
+ returns(NftId nftId)
166
+ {
167
+ _verifyObjectInfo(info, STAKE());
292
168
 
293
- // From IService
294
- function getName() public pure override(IService, ServiceBase) returns(string memory) {
295
- return NAME;
169
+ nftId = getRegistry().register(info);
296
170
  }
297
- //function getType() public pure override(IService, ServiceBase) returns(ObjectType serviceType) {
298
- // return SERVICE_TYPE;
299
- //}
300
-
301
171
 
302
- // from Versionable
172
+ // from IRegisterable
303
173
 
304
- /// @dev top level initializer
305
- // 1) registry is non upgradeable -> don't need a proxy and uses constructor !
306
- // 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
307
- // 3) deploy registry -> pass registry service address as constructor argument
308
- // registry is getting instantiated and locked to registry service address forever
309
- function _initialize(
310
- address owner,
311
- bytes memory data
312
- )
313
- internal
314
- initializer
315
- virtual override
174
+ function getFunctionConfigs()
175
+ external
176
+ pure
177
+ returns(
178
+ FunctionConfig[] memory config
179
+ )
316
180
  {
317
- (
318
- address initialAuthority,
319
- bytes memory registryByteCodeWithInitCode
320
- ) = abi.decode(data, (address, bytes));
181
+ config = new FunctionConfig[](8);
321
182
 
322
- __AccessManaged_init(initialAuthority);
183
+ // order of service registrations MUST be reverse to this array
184
+ /*config[-1].serviceDomain = STAKE();
185
+ config[-1].selector = RegistryService.registerStake.selector;*/
323
186
 
324
- bytes memory encodedConstructorArguments = abi.encode(
325
- owner,
326
- getMajorVersion());
187
+ config[0].serviceDomain = POLICY();
188
+ config[0].selectors = new bytes4[](0);
327
189
 
328
- bytes memory registryCreationCode = ContractDeployerLib.getCreationCode(
329
- registryByteCodeWithInitCode,
330
- encodedConstructorArguments);
190
+ config[1].serviceDomain = APPLICATION();
191
+ config[1].selectors = new bytes4[](1);
192
+ config[1].selectors[0] = RegistryService.registerPolicy.selector;
331
193
 
332
- IRegistry registry = IRegistry(ContractDeployerLib.deploy(
333
- registryCreationCode,
334
- REGISTRY_CREATION_CODE_HASH));
194
+ config[2].serviceDomain = CLAIM();
195
+ config[2].selectors = new bytes4[](0);
335
196
 
336
- NftId registryNftId = registry.getNftId(address(registry));
197
+ config[3].serviceDomain = BUNDLE();
198
+ config[3].selectors = new bytes4[](1);
199
+ config[3].selectors[0] = RegistryService.registerBundle.selector;
337
200
 
338
- _initializeServiceBase(address(registry), registryNftId, owner);
201
+ config[4].serviceDomain = PRODUCT();
202
+ config[4].selectors = new bytes4[](1);
203
+ config[4].selectors[0] = RegistryService.registerProduct.selector;
339
204
 
340
- // TODO why do registry service proxy need to keep its nftId??? -> no registryServiceNftId checks in implementation
341
- // if they are -> use registry address to obtain owner of registry service nft (works the same with any registerable and(or) implementation)
342
- linkToRegisteredNftId();
343
- _registerInterface(type(IRegistryService).interfaceId);
205
+ config[5].serviceDomain = POOL();
206
+ config[5].selectors = new bytes4[](1);
207
+ config[5].selectors[0] = RegistryService.registerPool.selector;
208
+
209
+ config[6].serviceDomain = DISTRIBUTION();
210
+ config[6].selectors = new bytes4[](2);
211
+ config[6].selectors[0] = RegistryService.registerDistribution.selector;
212
+ config[6].selectors[1] = RegistryService.registerDistributor.selector;
213
+
214
+ // registerInstance() have no restriction
215
+ config[7].serviceDomain = INSTANCE();
216
+ config[7].selectors = new bytes4[](1);
217
+ config[7].selectors[0] = RegistryService.registerInstance.selector;
344
218
  }
345
219
 
346
- // parent check done in registry because of approve()
220
+ // Internal
221
+
347
222
  function _getAndVerifyContractInfo(
348
223
  IRegisterable registerable,
349
224
  ObjectType expectedType, // assume can be valid only
350
- address expectedOwner // assume can be 0
225
+ address expectedOwner // assume can be 0 when given by other service
351
226
  )
352
227
  internal
353
- view
228
+ // view
354
229
  returns(
355
- IRegistry.ObjectInfo memory info,
356
- bytes memory data
230
+ IRegistry.ObjectInfo memory info
357
231
  )
358
232
  {
359
- (
360
- info,
361
- data
362
- ) = registerable.getInitialInfo();
233
+ info = registerable.getInitialInfo();
363
234
  info.objectAddress = address(registerable);
364
235
 
365
236
  if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
@@ -383,59 +254,30 @@ contract RegistryService is
383
254
  if(getRegistry().isRegistered(owner)) {
384
255
  revert RegisterableOwnerIsRegistered();
385
256
  }
386
-
387
- /*NftId parentNftId = info.parentNftId;
388
- IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
389
-
390
- if(parentInfo.objectType != parentType) { // parent registration + type
391
- revert InvalidParent(parentNftId);
392
- }*/
393
-
394
- return(
395
- info,
396
- data
397
- );
398
257
  }
399
258
 
400
- // parent checks done in registry because of approve()
401
259
  function _verifyObjectInfo(
402
260
  IRegistry.ObjectInfo memory info,
403
- ObjectType objectType
261
+ ObjectType expectedType
404
262
  )
405
263
  internal
406
264
  view
407
265
  {
408
- if(info.objectAddress > address(0)) {
409
- revert InvalidAddress(info.objectAddress);
410
- }
266
+ // enforce instead of check
267
+ info.objectAddress = address(0);
411
268
 
412
- if(
413
- getRegistry().isRegistered(info.initialOwner) ||
414
- info.initialOwner == address(0)) {
415
- // TODO non registered address can register object(e.g. POLICY()) and then transfer associated nft to registered contract
416
- // what are motivations to do so?
417
- // at least registered contract can not register objects by itself, SERVICE,
418
- revert InvalidInitialOwner(info.initialOwner);
269
+ if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
270
+ revert UnexpectedRegisterableType(expectedType, info.objectType);
419
271
  }
420
272
 
421
- // can catch all 3 if check that initialOwner is not registered
422
- /*if(info.initialOwner == msg.sender) {
423
- revert InitialOwnerIsParent();
424
- }
273
+ address owner = info.initialOwner;
425
274
 
426
- if(info.initialOwner == address(this)) {
427
- revert InitialOwnerIsService();
275
+ if(owner == address(0)) {
276
+ revert RegisterableOwnerIsZero();
428
277
  }
429
278
 
430
- if(info.initialOwner == address(getRegistry())) {
431
- revert InitialOwnerIsRegistry();
432
- }*/
433
-
434
- /*NftId parentNftId = info.parentNftId;
435
- IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
436
-
437
- if(parentInfo.objectType != parentType) { // parent registration + type
438
- revert InvalidParent(parentNftId);
439
- }*/
279
+ if(getRegistry().isRegistered(owner)) {
280
+ revert RegisterableOwnerIsRegistered();
281
+ }
440
282
  }
441
283
  }
@@ -9,6 +9,7 @@ import {Registry} from "./Registry.sol";
9
9
  import {IVersionable} from "../shared/IVersionable.sol";
10
10
  import {ProxyManager} from "../shared/ProxyManager.sol";
11
11
  import {RegistryService} from "./RegistryService.sol";
12
+ import {TokenRegistry} from "./TokenRegistry.sol";
12
13
 
13
14
 
14
15
  contract RegistryServiceManager is
@@ -16,35 +17,41 @@ contract RegistryServiceManager is
16
17
  {
17
18
  bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
18
19
 
19
- RegistryService private _registryService;
20
-
21
- AccessManager private _accessManager;
20
+ RegistryService private immutable _registryService;
22
21
 
23
22
  /// @dev initializes proxy manager with registry service implementation and deploys registry
24
23
  constructor(
25
- )
26
- ProxyManager()
24
+ address initialAuthority, // used by implementation
25
+ address registryAddress) // used by implementation
26
+ ProxyManager(registryAddress)
27
27
  {
28
- _accessManager = new AccessManager(msg.sender);
29
-
30
- bytes memory initializationData = abi.encode(address(_accessManager), type(Registry).creationCode);
31
-
28
+ require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
29
+ require(registryAddress > address(0), "RegistryServiceManager: registry is 0");
30
+
31
+ // implementation's initializer func `data` argument
32
+ RegistryService srv = new RegistryService();
33
+ bytes memory data = abi.encode(registryAddress, initialAuthority);
32
34
  IVersionable versionable = deploy(
33
- address(new RegistryService()),
34
- initializationData);
35
+ address(srv),
36
+ data);
35
37
 
36
38
  _registryService = RegistryService(address(versionable));
37
39
 
38
- // link ownership of registry service manager ot nft owner of registry service
39
- _linkToNftOwnable(
40
- address(_registryService.getRegistry()),
41
- address(_registryService));
40
+ // _linkToNftOwnable(address(_registryService));
41
+ }
42
+
43
+ // // from IRegisterable
42
44
 
43
- // implies that after this constructor call only upgrade functionality is available
44
- _isDeployed = true;
45
+ // // IMPORTANT: registry here and in constructor MUST be the same
46
+ function linkOwnershipToServiceNft()
47
+ public
48
+ onlyOwner
49
+ {
50
+ _linkToNftOwnable(address(_registryService));
45
51
  }
46
52
 
47
53
  //--- view functions ----------------------------------------------------//
54
+
48
55
  function getRegistryService()
49
56
  external
50
57
  view
@@ -52,12 +59,4 @@ contract RegistryServiceManager is
52
59
  {
53
60
  return _registryService;
54
61
  }
55
-
56
- function getAccessManager()
57
- external
58
- view
59
- returns (AccessManager)
60
- {
61
- return _accessManager;
62
- }
63
62
  }