@etherisc/gif-next 0.0.2-fb8d07b-779 → 0.0.2-fbe22f0-239

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 (284) hide show
  1. package/README.md +136 -2
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +858 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +588 -92
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → components/IComponent.sol/IComponent.json} +208 -143
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +543 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +663 -31
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +648 -5
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +818 -273
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +657 -181
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  39. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  40. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  41. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  42. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +86 -2
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  44. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1371 -129
  45. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  46. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +132 -21
  47. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  48. package/artifacts/contracts/instance/Instance.sol/Instance.json +293 -656
  49. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  50. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +211 -144
  51. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  52. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +89 -91
  53. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  54. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +395 -122
  55. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  56. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +149 -57
  57. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  58. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  59. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  60. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +243 -55
  61. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  65. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  66. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
  69. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1091 -0
  77. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1292 -0
  79. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +560 -0
  81. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +272 -91
  83. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +140 -40
  85. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +217 -58
  87. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  88. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +785 -0
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +20 -20
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +771 -0
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +22 -84
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +32 -247
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1352 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  100. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +616 -0
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +256 -180
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +140 -52
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +981 -0
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  108. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +548 -0
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +208 -224
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +228 -95
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.json +222 -330
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +197 -109
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +162 -112
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +124 -29
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +24 -0
  133. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +5 -5
  137. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IService.sol/IService.json +20 -20
  139. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  140. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
  141. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +130 -11
  143. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  144. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +172 -0
  145. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  146. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +130 -6
  147. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -11
  149. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Service.sol/Service.json +153 -20
  151. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  152. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  153. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  154. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  155. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -2
  156. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +126 -11
  159. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  161. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestService.sol/TestService.json +171 -38
  163. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -8
  167. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  168. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  169. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  173. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  175. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  176. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  178. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  179. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  180. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  183. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  185. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  187. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  189. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  195. package/contracts/components/Component.sol +230 -0
  196. package/contracts/components/Distribution.sol +53 -57
  197. package/contracts/components/IComponent.sol +50 -0
  198. package/contracts/components/IDistributionComponent.sol +5 -2
  199. package/contracts/components/IPoolComponent.sol +54 -29
  200. package/contracts/components/IProductComponent.sol +7 -3
  201. package/contracts/components/Pool.sol +153 -142
  202. package/contracts/components/Product.sol +109 -128
  203. package/contracts/instance/BundleManager.sol +125 -0
  204. package/contracts/instance/Cloneable.sol +46 -0
  205. package/contracts/instance/IInstance.sol +41 -8
  206. package/contracts/instance/IInstanceService.sol +15 -4
  207. package/contracts/instance/Instance.sol +65 -240
  208. package/contracts/instance/InstanceAccessManager.sol +87 -78
  209. package/contracts/instance/InstanceReader.sol +12 -25
  210. package/contracts/instance/InstanceService.sol +347 -95
  211. package/contracts/instance/InstanceServiceManager.sol +10 -12
  212. package/contracts/instance/ObjectManager.sol +84 -0
  213. package/contracts/instance/base/ComponentService.sol +134 -0
  214. package/contracts/instance/module/IAccess.sol +27 -18
  215. package/contracts/instance/module/ISetup.sol +7 -4
  216. package/contracts/instance/service/ApplicationService.sol +268 -0
  217. package/contracts/instance/service/BundleService.sol +298 -0
  218. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  219. package/contracts/instance/service/DistributionService.sol +45 -27
  220. package/contracts/instance/service/DistributionServiceManager.sol +10 -12
  221. package/contracts/instance/service/IApplicationService.sol +82 -0
  222. package/contracts/instance/service/IBundleService.sol +54 -0
  223. package/contracts/instance/service/IPolicyService.sol +88 -0
  224. package/contracts/instance/service/IPoolService.sol +6 -23
  225. package/contracts/instance/service/IProductService.sol +6 -73
  226. package/contracts/instance/service/PolicyService.sol +524 -0
  227. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  228. package/contracts/instance/service/PoolService.sol +40 -124
  229. package/contracts/instance/service/PoolServiceManager.sol +10 -12
  230. package/contracts/instance/service/ProductService.sol +233 -0
  231. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  232. package/contracts/registry/ChainNft.sol +1 -1
  233. package/contracts/registry/IRegistry.sol +38 -33
  234. package/contracts/registry/IRegistryService.sol +45 -13
  235. package/contracts/registry/Registry.sol +223 -250
  236. package/contracts/registry/RegistryAccessManager.sol +216 -0
  237. package/contracts/registry/RegistryService.sol +86 -224
  238. package/contracts/registry/RegistryServiceManager.sol +18 -36
  239. package/contracts/registry/ReleaseManager.sol +332 -0
  240. package/contracts/registry/TokenRegistry.sol +11 -9
  241. package/contracts/shared/ERC165.sol +12 -11
  242. package/contracts/shared/INftOwnable.sol +6 -1
  243. package/contracts/shared/IPolicyHolder.sol +26 -0
  244. package/contracts/shared/IRegisterable.sol +4 -6
  245. package/contracts/shared/IService.sol +2 -1
  246. package/contracts/shared/IVersionable.sol +2 -2
  247. package/contracts/shared/NftOwnable.sol +93 -42
  248. package/contracts/shared/PolicyHolder.sol +52 -0
  249. package/contracts/shared/ProxyManager.sol +6 -5
  250. package/contracts/shared/Registerable.sol +15 -24
  251. package/contracts/shared/Service.sol +18 -13
  252. package/contracts/shared/Versionable.sol +3 -2
  253. package/contracts/test/TestRegisterable.sol +1 -1
  254. package/contracts/test/TestService.sol +4 -3
  255. package/contracts/types/NftIdSet.sol +26 -24
  256. package/contracts/types/ObjectType.sol +5 -1
  257. package/contracts/types/RoleId.sol +10 -9
  258. package/package.json +3 -3
  259. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  260. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  261. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  262. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  263. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  264. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  265. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  266. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  267. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  268. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  269. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  270. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  271. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  272. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  273. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  274. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  275. package/contracts/components/BaseComponent.sol +0 -91
  276. package/contracts/components/IBaseComponent.sol +0 -25
  277. package/contracts/instance/AccessManagedSimple.sol +0 -115
  278. package/contracts/instance/AccessManagerSimple.sol +0 -692
  279. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  280. package/contracts/instance/base/ComponentServiceBase.sol +0 -125
  281. package/contracts/instance/base/IInstanceBase.sol +0 -23
  282. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  283. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  284. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -17,51 +17,41 @@ contract RegistryServiceManager is
17
17
  {
18
18
  bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
19
19
 
20
- AccessManager private _accessManager;
21
- RegistryService private _registryService;
22
- TokenRegistry private _tokenRegistry;
20
+ RegistryService private immutable _registryService;
23
21
 
24
22
  /// @dev initializes proxy manager with registry service implementation and deploys registry
25
23
  constructor(
26
- address accessManager
27
- )
24
+ address initialAuthority, // used by implementation
25
+ address registry) // used by implementation
28
26
  ProxyManager()
29
27
  {
30
- _accessManager = AccessManager(accessManager);
31
-
32
- bytes memory initializationData = abi.encode(accessManager, type(Registry).creationCode);
28
+ require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
29
+ require(registry > address(0), "RegistryServiceManager: registry is 0");
30
+
31
+ // implementation's initializer func `data` argument
32
+ bytes memory initializationData = abi.encode(
33
+ initialAuthority,
34
+ registry);
33
35
 
34
36
  IVersionable versionable = deploy(
35
37
  address(new RegistryService()),
36
38
  initializationData);
37
39
 
38
40
  _registryService = RegistryService(address(versionable));
39
-
40
- // link ownership of registry service manager ot nft owner of registry service
41
- _linkToNftOwnable(
42
- address(_registryService.getRegistry()),
43
- address(_registryService));
44
-
45
- // deploy token registry
46
-
47
- // _tokenRegistry = new TokenRegistry(
48
- // address(_registryService.getRegistry()),
49
- // address(_registryService));
50
-
51
- // implies that after this constructor call only upgrade functionality is available
52
- _isDeployed = true;
53
41
  }
54
42
 
55
- //--- view functions ----------------------------------------------------//
43
+ // from IRegisterable
56
44
 
57
- function getAccessManager()
58
- external
59
- view
60
- returns (AccessManager)
45
+ // IMPORTANT: registry here and in constructor MUST be the same
46
+ function linkToNftOwnable(address registry)
47
+ public
48
+ onlyOwner
61
49
  {
62
- return _accessManager;
50
+ _linkToNftOwnable(registry, address(_registryService));
63
51
  }
64
52
 
53
+ //--- view functions ----------------------------------------------------//
54
+
65
55
  function getRegistryService()
66
56
  external
67
57
  view
@@ -69,12 +59,4 @@ contract RegistryServiceManager is
69
59
  {
70
60
  return _registryService;
71
61
  }
72
-
73
- function getTokenRegistry()
74
- external
75
- view
76
- returns (TokenRegistry)
77
- {
78
- return _tokenRegistry;
79
- }
80
62
  }
@@ -0,0 +1,332 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
5
+
6
+ import {NftId} from "../types/NftId.sol";
7
+ import {RoleId} from "../types/RoleId.sol";
8
+ import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../types/ObjectType.sol";
9
+ import {VersionPart, VersionPartLib} from "../types/Version.sol";
10
+ import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
11
+
12
+ import {IService} from "../shared/IService.sol";
13
+
14
+ import {IRegistry} from "./IRegistry.sol";
15
+ import {Registry} from "./Registry.sol";
16
+ import {IRegistryService} from "./IRegistryService.sol";
17
+ import {RegistryAccessManager} from "./RegistryAccessManager.sol";
18
+
19
+
20
+ contract ReleaseManager is AccessManaged
21
+ {
22
+ using ObjectTypeLib for ObjectType;
23
+
24
+ event LogReleaseCreation(VersionPart version);
25
+ event LogReleaseActivation(VersionPart version);
26
+
27
+ // createNextRelease
28
+ error NotRegistryService();
29
+ error UnexpectedServiceAuthority(address expected, address found);
30
+
31
+ // registerService
32
+ error NotService();
33
+
34
+ // activateNextRelease
35
+ error ReleaseNotCreated();
36
+ error ReleaseRegistrationNotFinished();
37
+
38
+ // _getAndVerifyContractInfo
39
+ error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
40
+ error NotRegisterableOwner(address notOwner);
41
+ error SelfRegistration();
42
+ error RegisterableOwnerIsRegistered();
43
+
44
+ // _verifyServiceInfo
45
+ error UnexpectedServiceVersion(VersionPart expected, VersionPart found);
46
+ error UnexpectedServiceDomain(ObjectType expected, ObjectType found);
47
+
48
+ // _verifyAndStoreConfig
49
+ error ConfigMissing();
50
+ error ConfigServiceDomainInvalid(uint configArrayIndex, ObjectType domain);
51
+ error ConfigSelectorZero(uint configArrayIndex);
52
+ error SelectorAlreadyExists(VersionPart releaseVersion, ObjectType serviceDomain);
53
+
54
+
55
+ RegistryAccessManager private immutable _accessManager;
56
+ IRegistry private immutable _registry;
57
+
58
+ VersionPart immutable _initial;// first active version
59
+ VersionPart _latest;// latest active version
60
+ VersionPart _next;// version to create and activate
61
+
62
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) _release;
63
+
64
+ mapping(VersionPart version => mapping(ObjectType serviceDomain => bytes4)) _selector; // registry service function selector assigned to domain
65
+
66
+ uint _awaitingRegistration; // "services left to register" counter
67
+
68
+ mapping(address registryService => bool isActive) _active;
69
+
70
+ mapping(VersionPart version => bool isValid) _valid; // TODO refactor to use _active only
71
+
72
+ constructor(
73
+ RegistryAccessManager accessManager,
74
+ VersionPart initialVersion)
75
+ AccessManaged(accessManager.authority())
76
+ {
77
+ require(initialVersion.toInt() > 0, "ReleaseManager: initial version is 0");
78
+
79
+ _accessManager = accessManager;
80
+
81
+ _initial = initialVersion;
82
+ _next = initialVersion;
83
+
84
+ _registry = new Registry();
85
+ }
86
+
87
+ /// @dev skips previous release if was not activated
88
+ function createNextRelease()
89
+ external
90
+ restricted // GIF_ADMIN_ROLE
91
+ {
92
+ // allow to register new registry service for next version
93
+ VersionPartLib.toVersionPart(_next.toInt() + 1);
94
+ // disallow registration of regular services for next version while registry service is not registered
95
+ _awaitingRegistration = 0;
96
+
97
+ emit LogReleaseCreation(_next);
98
+ }
99
+
100
+ function activateNextRelease()
101
+ external
102
+ restricted // GIF_ADMIN_ROLE
103
+ {
104
+ VersionPart version = _next;
105
+ address service = _registry.getServiceAddress(REGISTRY(), version);
106
+
107
+ // release was created
108
+ if(service == address(0)) {
109
+ revert ReleaseNotCreated();
110
+ }
111
+
112
+ // release fully deployed
113
+ if(_awaitingRegistration > 0) {
114
+ revert ReleaseRegistrationNotFinished();
115
+ }
116
+
117
+ //setTargetClosed(service, false);
118
+
119
+ _latest = version;
120
+
121
+ _active[service] = true;
122
+ _valid[version] = true;
123
+
124
+ emit LogReleaseActivation(version);
125
+ }
126
+
127
+ // TODO deploy proxy and initialize with given implementation instead of using given proxy?
128
+ // IMPORTANT: MUST never be possible to create with access/release manager, token registry
129
+ // callable once per release after release creation, can not register regular services while registry service is not registered
130
+ function registerRegistryService(IRegistryService service)
131
+ external
132
+ restricted // GIF_MANAGER_ROLE
133
+ returns(NftId nftId)
134
+ {
135
+ if(!service.supportsInterface(type(IRegistryService).interfaceId)) {
136
+ revert NotRegistryService();
137
+ }
138
+
139
+ // TODO unreliable! MUST guarantee the same authority -> how?
140
+ address serviceAuthority = service.authority();
141
+ if(serviceAuthority != authority()) {
142
+ revert UnexpectedServiceAuthority(
143
+ authority(),
144
+ serviceAuthority);
145
+ }
146
+
147
+ IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
148
+
149
+ VersionPart version = _next;
150
+ ObjectType domain = REGISTRY();
151
+ _verifyServiceInfo(info, version, domain);
152
+
153
+ // data: config bytes
154
+ _createRelease(service.getFunctionConfigs());
155
+
156
+ //setTargetClosed(service, true);
157
+
158
+ nftId = _registry.registerService(info, version, domain);
159
+
160
+ // external call
161
+ service.linkToRegisteredNftId();
162
+ }
163
+
164
+ // TODO adding service to release -> synchronized with proxy upgrades or simple addServiceToRelease(service, version, selector)?
165
+ // TODO removing service from release? -> set _active to false forever, but keep all other records?
166
+ function registerService(IService service)
167
+ external
168
+ restricted // GIF_MANAGER_ROLE
169
+ returns(NftId nftId)
170
+ {
171
+ if(!service.supportsInterface(type(IService).interfaceId)) {
172
+ revert NotService();
173
+ }
174
+
175
+ IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
176
+ VersionPart version = getNextVersion();
177
+ ObjectType domain = _release[version].domains[_awaitingRegistration];// reversed registration order of services specified in RegistryService config
178
+ _verifyServiceInfo(info, version, domain);
179
+
180
+ // setup and grant unique role if service does registrations
181
+ bytes4[] memory selector = new bytes4[](1);
182
+ selector[0] = _selector[version][domain];
183
+ address registryService = _registry.getServiceAddress(REGISTRY(), version);
184
+ if(selector[0] != 0) {
185
+ _accessManager.setAndGrantUniqueRole(
186
+ address(service),
187
+ registryService,
188
+ selector);
189
+ }
190
+
191
+ _awaitingRegistration--;
192
+
193
+ nftId = _registry.registerService(info, version, domain);
194
+
195
+ // external call
196
+ service.linkToRegisteredNftId();
197
+ }
198
+
199
+ //--- view functions ----------------------------------------------------//
200
+
201
+ function isActiveRegistryService(address service) external view returns(bool)
202
+ {
203
+ return _active[service];
204
+ }
205
+
206
+ function isValidRelease(VersionPart version) external view returns(bool)
207
+ {
208
+ return _valid[version];
209
+ }
210
+
211
+ function getRegistry() external view returns(address)
212
+ {
213
+ return (address(_registry));
214
+ }
215
+
216
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
217
+ {
218
+ return _release[version];
219
+ }
220
+
221
+ function getNextVersion() public view returns(VersionPart)
222
+ {
223
+ return _next;
224
+ }
225
+
226
+ function getLatestVersion() external view returns(VersionPart) {
227
+ return _latest;
228
+ }
229
+
230
+ function getInitialVersion() external view returns(VersionPart) {
231
+ return _initial;
232
+ }
233
+
234
+ //--- private functions ----------------------------------------------------//
235
+
236
+ function _getAndVerifyContractInfo(
237
+ IService service,
238
+ ObjectType expectedType,
239
+ address expectedOwner // assume always valid, can not be 0
240
+ )
241
+ internal
242
+ // view
243
+ returns(
244
+ IRegistry.ObjectInfo memory info
245
+ )
246
+ {
247
+ info = service.getInitialInfo();
248
+ info.objectAddress = address(service);
249
+ info.isInterceptor = false; // service is never interceptor, at least now
250
+
251
+ if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
252
+ revert UnexpectedRegisterableType(expectedType, info.objectType);
253
+ }
254
+
255
+ address owner = info.initialOwner;
256
+
257
+ if(owner != expectedOwner) { // registerable owner protection
258
+ revert NotRegisterableOwner(expectedOwner);
259
+ }
260
+
261
+ if(owner == address(service)) {
262
+ revert SelfRegistration();
263
+ }
264
+
265
+ if(_registry.isRegistered(owner)) {
266
+ revert RegisterableOwnerIsRegistered();
267
+ }
268
+ }
269
+
270
+ function _verifyServiceInfo(
271
+ IRegistry.ObjectInfo memory info,
272
+ VersionPart expectedVersion,
273
+ ObjectType expectedDomain
274
+ )
275
+ internal
276
+ view
277
+ returns(ObjectType)
278
+ {
279
+ (
280
+ ObjectType domain,
281
+ VersionPart version
282
+ ) = abi.decode(info.data, (ObjectType, VersionPart));
283
+
284
+ if(version != expectedVersion) {
285
+ revert UnexpectedServiceVersion(expectedVersion, version);
286
+ }
287
+
288
+ if(domain != expectedDomain) {
289
+ revert UnexpectedServiceDomain(expectedDomain, domain);
290
+ }
291
+
292
+ return domain;
293
+ }
294
+
295
+ // TODO check if registry supports types specified in the config array
296
+ function _createRelease(IRegistryService.FunctionConfig[] memory config)
297
+ internal
298
+ {
299
+ VersionPart version = getNextVersion();
300
+
301
+ if(config.length == 0) {
302
+ revert ConfigMissing();
303
+ }
304
+ // always in release
305
+ _release[version].domains.push(REGISTRY());
306
+ for(uint idx = 0; idx < config.length; idx++)
307
+ {
308
+ ObjectType domain = config[idx].serviceDomain;
309
+ bytes4 selector = config[idx].selector;
310
+
311
+ // not "registry service" / zero domain
312
+ if(
313
+ domain == REGISTRY() ||
314
+ domain.eqz()
315
+ ) { revert ConfigServiceDomainInvalid(idx, domain); }
316
+
317
+ // TODO can be zero -> e.g. duplicate domain, first with zero selector, second with non zero selector -> need to check _release[version].domains.contains(domain) instead
318
+ // no overwrite
319
+ if(_selector[version][domain] > 0) {
320
+ revert SelectorAlreadyExists(version, domain);
321
+ }
322
+
323
+ _selector[version][domain] = selector;
324
+ _release[version].domains.push(domain);
325
+ }
326
+ // TODO set when activated?
327
+ _release[version].createdAt = TimestampLib.blockTimestamp();
328
+ //_release[version].updatedAt = TimestampLib.blockTimestamp();
329
+
330
+ _awaitingRegistration = config.length;
331
+ }
332
+ }
@@ -6,16 +6,14 @@ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165C
6
6
 
7
7
  import {IRegisterable} from "../shared/IRegisterable.sol";
8
8
  import {IRegistry} from "./IRegistry.sol";
9
- import {Version, VersionPart, VersionLib, VersionPartLib} from "../types/Version.sol";
9
+ import {VersionPart} from "../types/Version.sol";
10
+ import {REGISTRY} from "../types/ObjectType.sol";
10
11
  import {NftOwnable} from "../shared/NftOwnable.sol";
11
12
 
12
13
  /// @title contract to register token per GIF major release.
13
14
  contract TokenRegistry is
14
15
  NftOwnable
15
16
  {
16
-
17
- string public constant REGISTRY_SERVICE_NAME = "RegistryService";
18
-
19
17
  event LogRegistered(address token, string symbol, uint256 decimals);
20
18
  event LogTokenStateSet(address token, VersionPart majorVersion, bool active);
21
19
 
@@ -29,17 +27,21 @@ contract TokenRegistry is
29
27
  mapping(address token => mapping(VersionPart majorVersion => bool isActive)) internal _active;
30
28
 
31
29
  constructor()
32
- NftOwnable()
33
- { }
30
+ {
31
+ initializeOwner(msg.sender);
32
+ }
34
33
 
35
34
 
36
35
  /// @dev link ownership of token registry to nft owner of registry service
36
+ // TODO latter registry service will get new release, new address, new nft, TokenRegistry will not catch that -> use AccessManaged only for services
37
37
  function linkToNftOwnable(address registryAddress)
38
38
  external
39
39
  onlyOwner
40
40
  {
41
41
  IRegistry registry = IRegistry(registryAddress);
42
- address registryServiceAddress = registry.getServiceAddress(REGISTRY_SERVICE_NAME, registry.getMajorVersion());
42
+ // TODO use _latest instead of _initial -> but _latest is 0 before first release activation
43
+ address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getNextVersion());
44
+ //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getInitialVersion());
43
45
 
44
46
  _linkToNftOwnable(registryAddress, registryServiceAddress);
45
47
  }
@@ -59,7 +61,7 @@ contract TokenRegistry is
59
61
  // verify valid major version
60
62
  // ensure major version increments is one
61
63
  uint256 version = majorVersion.toInt();
62
- if (version < _registry.getMajorVersionMin().toInt() || version > _registry.getMajorVersionMax().toInt()) {
64
+ if (!getRegistry().isValidRelease(majorVersion)) {
63
65
  revert TokenMajorVersionInvalid(majorVersion);
64
66
  }
65
67
 
@@ -80,7 +82,7 @@ contract TokenRegistry is
80
82
  return _registered[token];
81
83
  }
82
84
 
83
- function isActive(address token, VersionPart majorVersion) external view returns (bool) {
85
+ function isActive(address token, VersionPart majorVersion) external view returns (bool) {
84
86
  return _active[token][majorVersion];
85
87
  }
86
88
 
@@ -2,24 +2,25 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
6
 
6
- contract ERC165 is IERC165 {
7
+ contract ERC165 is
8
+ Initializable,
9
+ IERC165
10
+ {
7
11
  mapping(bytes4 => bool) private _isSupported;
8
12
 
9
- constructor() {
10
- _initializeERC165();
11
- }
12
-
13
- function supportsInterface(bytes4 interfaceId) external view override returns (bool) {
14
- return _isSupported[interfaceId];
15
- }
16
-
17
13
  // @dev register support for ERC165 itself
18
- function _initializeERC165() internal {
14
+ function initializeERC165() public onlyInitializing() {
19
15
  _isSupported[type(IERC165).interfaceId] = true;
20
16
  }
21
17
 
22
- function _registerInterface(bytes4 interfaceId) internal {
18
+ // @dev register support for provided interfaceId
19
+ function registerInterface(bytes4 interfaceId) public onlyInitializing() {
23
20
  _isSupported[interfaceId] = true;
24
21
  }
22
+
23
+ function supportsInterface(bytes4 interfaceId) external view override returns (bool) {
24
+ return _isSupported[interfaceId];
25
+ }
25
26
  }
@@ -1,10 +1,15 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+
4
6
  import {IRegistry} from "../registry/IRegistry.sol";
5
7
  import {NftId} from "../types/NftId.sol";
6
8
 
7
- interface INftOwnable {
9
+ interface INftOwnable is
10
+ IERC165
11
+ {
12
+ error ErrorInitialOwnerZero();
8
13
  error ErrorNotOwner(address account);
9
14
 
10
15
  error ErrorAlreadyLinked(address registry, NftId nftId);
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
6
+
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {NftId} from "../types/NftId.sol";
9
+ import {NumberId} from "../types/NumberId.sol";
10
+
11
+ /// @dev generic interface for contracts that need to hold policies and receive payouts
12
+ /// GIF will notify policy holder contracts for policy creation and payout execution
13
+ ///
14
+
15
+ interface IPolicyHolder is IERC165, IERC721Receiver {
16
+
17
+ /// @dev callback function that will be called after successful policy creation
18
+ function policyCreated(NftId policyNftId) external;
19
+
20
+ /// @dev callback function that will be called after a successful payout
21
+ function payoutProcessed(NftId policyNftId, NumberId payoutId, address beneficiary, uint256 amount) external;
22
+
23
+ /// @dev determines beneficiary address that will be used in payouts targeting this contract
24
+ /// returned address will override GIF default where the policy nft holder is treated as beneficiary
25
+ function getBeneficiary(NftId policyId, NumberId claimId) external view returns (address beneficiary);
26
+ }
@@ -1,17 +1,15 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
-
6
4
  import {INftOwnable} from "./INftOwnable.sol";
7
5
  import {IRegistry} from "../registry/IRegistry.sol";
8
- import {NftId} from "../types/NftId.sol";
9
- import {ObjectType} from "../types/ObjectType.sol";
10
6
 
11
- interface IRegisterable is IERC165, INftOwnable {
7
+ interface IRegisterable is
8
+ INftOwnable
9
+ {
12
10
 
13
11
  function getInitialInfo()
14
12
  external
15
13
  view
16
- returns (IRegistry.ObjectInfo memory, bytes memory data);
14
+ returns (IRegistry.ObjectInfo memory);
17
15
  }
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  import {VersionPart} from "../types/Version.sol";
5
+ import {ObjectType} from "../types/ObjectType.sol";
5
6
 
6
7
  import {IRegisterable} from "./IRegisterable.sol";
7
8
  import {IVersionable} from "./IVersionable.sol";
@@ -10,6 +11,6 @@ interface IService is
10
11
  IRegisterable,
11
12
  IVersionable
12
13
  {
13
- function getName() external pure returns(string memory name);
14
+ function getDomain() external pure returns(ObjectType serviceDomain);
14
15
  function getMajorVersion() external view returns(VersionPart majorVersion);
15
16
  }
@@ -49,7 +49,7 @@ interface IVersionable {
49
49
  * implementation MUST call internal function Versionable._updateVersionHistory
50
50
  * new version MUST inherit from previous version
51
51
  */
52
- function initialize(address implementation, address activatedBy, bytes memory activationData) external;
52
+ function initializeVersionable(address implementation, address activatedBy, bytes memory activationData) external;
53
53
 
54
54
  /**
55
55
  * @dev
@@ -58,7 +58,7 @@ interface IVersionable {
58
58
  * new version MUST inherit from previous version
59
59
  * the first verion MUST revert
60
60
  */
61
- function upgrade(address implementation, address activatedBy, bytes memory upgradeData) external;
61
+ function upgradeVersionable(address implementation, address activatedBy, bytes memory upgradeData) external;
62
62
 
63
63
  /**
64
64
  * @dev returns true if the specified version has been activated for the current contract