@etherisc/gif-next 0.0.2-2a59cd5-352 → 0.0.2-2aa1035-611

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 (363) hide show
  1. package/README.md +6 -83
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +90 -145
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +145 -233
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +158 -73
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +169 -150
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +350 -180
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +162 -145
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +298 -288
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +95 -218
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +274 -2000
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +183 -203
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +398 -2776
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +491 -127
  32. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  34. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +253 -236
  36. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +216 -451
  38. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +184 -121
  40. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  41. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2663 -0
  42. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  43. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  44. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +100 -215
  46. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  50. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  52. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
  54. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  57. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  58. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  60. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  61. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  62. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +164 -379
  64. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +649 -0
  66. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +433 -425
  68. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +244 -105
  70. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1072 -0
  72. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +685 -0
  74. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +657 -318
  76. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +270 -115
  78. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +99 -236
  80. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +235 -319
  82. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +602 -0
  84. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +373 -158
  86. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +417 -232
  88. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +568 -120
  90. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +518 -0
  92. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +64 -163
  94. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +563 -366
  96. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +220 -121
  98. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +771 -247
  100. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +237 -102
  102. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +988 -0
  104. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +689 -0
  106. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +136 -271
  108. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +186 -107
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +4 -193
  116. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  118. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
  120. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  121. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +28 -277
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +182 -113
  126. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  127. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
  128. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  129. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +34 -67
  130. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  132. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -30
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -30
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -21
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IService.sol/IService.json +64 -163
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +10 -62
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -23
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +171 -88
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +11 -74
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -23
  154. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  155. package/artifacts/contracts/shared/Service.sol/Service.json +72 -203
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -150
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +11 -74
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  168. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestService.sol/TestService.json +90 -253
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  171. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  173. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +6 -188
  175. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  176. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  177. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  178. package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
  179. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  181. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  184. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  186. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
  188. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  190. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  192. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  194. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  197. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  198. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  199. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  201. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  203. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  205. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  206. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  207. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  208. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  209. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  210. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  211. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  213. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  214. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  215. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  216. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  217. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  218. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  219. package/contracts/components/Component.sol +100 -83
  220. package/contracts/components/Distribution.sol +22 -46
  221. package/contracts/components/IComponent.sol +43 -17
  222. package/contracts/components/IDistributionComponent.sol +1 -30
  223. package/contracts/components/IPoolComponent.sol +73 -47
  224. package/contracts/components/IProductComponent.sol +3 -2
  225. package/contracts/components/Pool.sol +178 -130
  226. package/contracts/components/Product.sol +172 -76
  227. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  228. package/contracts/instance/BundleManager.sol +10 -9
  229. package/contracts/instance/Cloneable.sol +7 -2
  230. package/contracts/instance/IInstance.sol +43 -49
  231. package/contracts/instance/IInstanceService.sol +32 -12
  232. package/contracts/instance/Instance.sol +129 -173
  233. package/contracts/instance/InstanceAccessManager.sol +404 -160
  234. package/contracts/instance/InstanceAuthorizationsLib.sol +300 -0
  235. package/contracts/instance/InstanceReader.sol +43 -16
  236. package/contracts/instance/InstanceService.sol +160 -293
  237. package/contracts/instance/InstanceServiceManager.sol +1 -1
  238. package/contracts/instance/InstanceStore.sol +208 -0
  239. package/contracts/instance/ObjectManager.sol +6 -8
  240. package/contracts/instance/base/ComponentService.sol +53 -39
  241. package/contracts/instance/base/KeyValueStore.sol +13 -5
  242. package/contracts/instance/base/Lifecycle.sol +23 -6
  243. package/contracts/instance/module/IAccess.sol +21 -14
  244. package/contracts/instance/module/IBundle.sol +8 -5
  245. package/contracts/instance/module/IComponents.sol +41 -0
  246. package/contracts/instance/module/IDistribution.sol +2 -0
  247. package/contracts/instance/module/IPolicy.sol +41 -9
  248. package/contracts/instance/module/ISetup.sol +7 -21
  249. package/contracts/instance/service/ApplicationService.sol +75 -158
  250. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  251. package/contracts/instance/service/BundleService.sol +230 -88
  252. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  253. package/contracts/instance/service/ClaimService.sol +239 -0
  254. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  255. package/contracts/instance/service/DistributionService.sol +156 -96
  256. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  257. package/contracts/instance/service/IApplicationService.sol +9 -30
  258. package/contracts/instance/service/IBundleService.sol +74 -26
  259. package/contracts/instance/service/IClaimService.sol +92 -0
  260. package/contracts/instance/service/IDistributionService.sol +26 -6
  261. package/contracts/instance/service/IPolicyService.sol +89 -38
  262. package/contracts/instance/service/IPoolService.sol +85 -3
  263. package/contracts/instance/service/IPricingService.sol +36 -0
  264. package/contracts/instance/service/PolicyService.sol +358 -305
  265. package/contracts/instance/service/PolicyServiceManager.sol +2 -2
  266. package/contracts/instance/service/PoolService.sol +246 -19
  267. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  268. package/contracts/instance/service/PricingService.sol +275 -0
  269. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  270. package/contracts/instance/service/ProductService.sol +37 -60
  271. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  272. package/contracts/registry/ChainNft.sol +8 -0
  273. package/contracts/registry/IRegistry.sol +2 -0
  274. package/contracts/registry/IRegistryService.sol +11 -10
  275. package/contracts/registry/ITransferInterceptor.sol +1 -0
  276. package/contracts/registry/Registry.sol +23 -20
  277. package/contracts/registry/RegistryService.sol +56 -47
  278. package/contracts/registry/RegistryServiceManager.sol +13 -13
  279. package/contracts/registry/ReleaseManager.sol +26 -33
  280. package/contracts/registry/TokenRegistry.sol +13 -10
  281. package/contracts/shared/ERC165.sol +2 -1
  282. package/contracts/shared/INftOwnable.sol +4 -9
  283. package/contracts/shared/IRegistryLinked.sol +0 -3
  284. package/contracts/shared/IService.sol +4 -4
  285. package/contracts/shared/IVersionable.sol +4 -47
  286. package/contracts/shared/NftOwnable.sol +10 -80
  287. package/contracts/shared/ProxyManager.sol +98 -24
  288. package/contracts/shared/Registerable.sol +3 -10
  289. package/contracts/shared/RegistryLinked.sol +10 -26
  290. package/contracts/shared/Service.sol +29 -17
  291. package/contracts/shared/TokenHandler.sol +11 -5
  292. package/contracts/shared/Versionable.sol +1 -90
  293. package/contracts/test/TestService.sol +1 -1
  294. package/contracts/types/Amount.sol +70 -0
  295. package/contracts/types/Blocknumber.sol +1 -0
  296. package/contracts/types/ClaimId.sol +75 -0
  297. package/contracts/types/Fee.sol +13 -5
  298. package/contracts/types/NftId.sol +8 -0
  299. package/contracts/types/ObjectType.sol +12 -7
  300. package/contracts/types/PayoutId.sol +82 -0
  301. package/contracts/types/Referral.sol +4 -0
  302. package/contracts/types/RoleId.sol +16 -9
  303. package/contracts/types/Seconds.sol +54 -0
  304. package/contracts/types/StateId.sol +7 -2
  305. package/contracts/types/Timestamp.sol +18 -13
  306. package/contracts/types/UFixed.sol +1 -0
  307. package/contracts/types/Version.sol +1 -0
  308. package/package.json +1 -1
  309. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  310. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  311. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  312. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  313. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  314. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  315. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  316. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  317. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  318. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  319. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  320. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  321. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  322. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  323. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  325. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  326. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  327. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  329. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  331. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  333. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  335. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  337. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  339. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  341. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  343. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  345. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  347. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  349. package/contracts/experiment/cloning/Cloner.sol +0 -47
  350. package/contracts/experiment/errors/Require.sol +0 -38
  351. package/contracts/experiment/errors/Revert.sol +0 -44
  352. package/contracts/experiment/inheritance/A.sol +0 -53
  353. package/contracts/experiment/inheritance/B.sol +0 -28
  354. package/contracts/experiment/inheritance/C.sol +0 -34
  355. package/contracts/experiment/inheritance/IA.sol +0 -13
  356. package/contracts/experiment/inheritance/IB.sol +0 -10
  357. package/contracts/experiment/inheritance/IC.sol +0 -12
  358. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  359. package/contracts/experiment/statemachine/ISM.sol +0 -25
  360. package/contracts/experiment/statemachine/SM.sol +0 -57
  361. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  362. package/contracts/experiment/types/TypeA.sol +0 -47
  363. package/contracts/experiment/types/TypeB.sol +0 -29
@@ -6,7 +6,7 @@ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManage
6
6
  import {NftId} from "../types/NftId.sol";
7
7
  import {RoleId} from "../types/RoleId.sol";
8
8
  import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../types/ObjectType.sol";
9
- import {VersionPart, VersionPartLib} from "../types/Version.sol";
9
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../types/Version.sol";
10
10
  import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
11
11
 
12
12
  import {IService} from "../shared/IService.sol";
@@ -41,7 +41,7 @@ contract ReleaseManager is AccessManaged
41
41
  error SelfRegistration();
42
42
  error RegisterableOwnerIsRegistered();
43
43
 
44
- // _verifyServiceInfo
44
+ // _verifyService
45
45
  error UnexpectedServiceVersion(VersionPart expected, VersionPart found);
46
46
  error UnexpectedServiceDomain(ObjectType expected, ObjectType found);
47
47
 
@@ -55,19 +55,19 @@ contract ReleaseManager is AccessManaged
55
55
  RegistryAccessManager private immutable _accessManager;
56
56
  IRegistry private immutable _registry;
57
57
 
58
- VersionPart immutable _initial;// first active version
59
- VersionPart _latest;// latest active version
60
- VersionPart _next;// version to create and activate
58
+ VersionPart immutable _initial;// first active major version
59
+ VersionPart _latest;// latest active major version
60
+ VersionPart _next;// major version to create and activate
61
61
 
62
- mapping(VersionPart version => IRegistry.ReleaseInfo info) _release;
62
+ mapping(VersionPart majorVersion => IRegistry.ReleaseInfo info) _release;
63
63
 
64
- mapping(VersionPart version => mapping(ObjectType serviceDomain => bytes4[])) _selectors; // registry service function selector assigned to domain
64
+ mapping(VersionPart majorVersion => mapping(ObjectType serviceDomain => bytes4[])) _selectors; // registry service function selector assigned to domain
65
65
 
66
66
  uint _awaitingRegistration; // "services left to register" counter
67
67
 
68
68
  mapping(address registryService => bool isActive) _active;
69
69
 
70
- mapping(VersionPart version => bool isValid) _valid; // TODO refactor to use _active only
70
+ mapping(VersionPart majorVersion => bool isValid) _valid; // TODO refactor to use _active only
71
71
 
72
72
  constructor(
73
73
  RegistryAccessManager accessManager,
@@ -146,16 +146,12 @@ contract ReleaseManager is AccessManaged
146
146
 
147
147
  IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
148
148
 
149
- VersionPart version = _next;
149
+ VersionPart majorVersion = _next;
150
150
  ObjectType domain = REGISTRY();
151
- _verifyServiceInfo(info, version, domain);
152
-
153
- // data: config bytes
151
+ _verifyService(service, majorVersion, domain);
154
152
  _createRelease(service.getFunctionConfigs());
155
-
156
- //setTargetClosed(service, true);
157
153
 
158
- nftId = _registry.registerService(info, version, domain);
154
+ nftId = _registry.registerService(info, majorVersion, domain);
159
155
 
160
156
  // external call
161
157
  service.linkToRegisteredNftId();
@@ -173,13 +169,13 @@ contract ReleaseManager is AccessManaged
173
169
  }
174
170
 
175
171
  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);
172
+ VersionPart majorVersion = getNextVersion();
173
+ ObjectType domain = _release[majorVersion].domains[_awaitingRegistration];// reversed registration order of services specified in RegistryService config
174
+ _verifyService(service, majorVersion, domain);
179
175
 
180
176
  // setup and grant unique role if service does registrations
181
- bytes4[] memory selectors = _selectors[version][domain];
182
- address registryService = _registry.getServiceAddress(REGISTRY(), version);
177
+ bytes4[] memory selectors = _selectors[majorVersion][domain];
178
+ address registryService = _registry.getServiceAddress(REGISTRY(), majorVersion);
183
179
  if(selectors.length > 0) {
184
180
  _accessManager.setAndGrantUniqueRole(
185
181
  address(service),
@@ -189,7 +185,7 @@ contract ReleaseManager is AccessManaged
189
185
 
190
186
  _awaitingRegistration--;
191
187
 
192
- nftId = _registry.registerService(info, version, domain);
188
+ nftId = _registry.registerService(info, majorVersion, domain);
193
189
 
194
190
  // external call
195
191
  service.linkToRegisteredNftId();
@@ -266,8 +262,8 @@ contract ReleaseManager is AccessManaged
266
262
  }
267
263
  }
268
264
 
269
- function _verifyServiceInfo(
270
- IRegistry.ObjectInfo memory info,
265
+ function _verifyService(
266
+ IService service,
271
267
  VersionPart expectedVersion,
272
268
  ObjectType expectedDomain
273
269
  )
@@ -275,20 +271,17 @@ contract ReleaseManager is AccessManaged
275
271
  view
276
272
  returns(ObjectType)
277
273
  {
278
- (
279
- ObjectType domain,
280
- VersionPart version
281
- ) = abi.decode(info.data, (ObjectType, VersionPart));
282
-
283
- if(version != expectedVersion) {
284
- revert UnexpectedServiceVersion(expectedVersion, version);
274
+ Version version = service.getVersion();
275
+ VersionPart majorVersion = version.toMajorPart();
276
+ if(majorVersion != expectedVersion) {
277
+ revert UnexpectedServiceVersion(expectedVersion, majorVersion);
285
278
  }
286
279
 
287
- if(domain != expectedDomain) {
288
- revert UnexpectedServiceDomain(expectedDomain, domain);
280
+ if(service.getDomain() != expectedDomain) {
281
+ revert UnexpectedServiceDomain(expectedDomain, service.getDomain());
289
282
  }
290
283
 
291
- return domain;
284
+ return expectedDomain;
292
285
  }
293
286
 
294
287
  // TODO check if registry supports types specified in the config array
@@ -26,9 +26,18 @@ contract TokenRegistry is
26
26
  mapping(address token => bool registered) internal _registered;
27
27
  mapping(address token => mapping(VersionPart majorVersion => bool isActive)) internal _active;
28
28
 
29
- constructor()
29
+ constructor(
30
+ address registry
31
+ )
30
32
  {
31
- initializeOwner(msg.sender);
33
+ initialize(registry);
34
+ }
35
+
36
+ function initialize(address registry)
37
+ public
38
+ initializer()
39
+ {
40
+ initializeNftOwnable(msg.sender, registry);
32
41
  }
33
42
 
34
43
 
@@ -41,9 +50,8 @@ contract TokenRegistry is
41
50
  IRegistry registry = IRegistry(registryAddress);
42
51
  // TODO use _latest instead of _initial -> but _latest is 0 before first release activation
43
52
  address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getNextVersion());
44
- //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getInitialVersion());
45
53
 
46
- _linkToNftOwnable(registryAddress, registryServiceAddress);
54
+ _linkToNftOwnable(registryServiceAddress);
47
55
  }
48
56
 
49
57
  /// @dev token state is informative, registry have no clue about used tokens
@@ -94,12 +102,7 @@ contract TokenRegistry is
94
102
  revert NotContract(token);
95
103
  }
96
104
 
97
- // MUST not be GIF registerable
98
- if(ERC165Checker.supportsInterface(token, type(IRegisterable).interfaceId)) {
99
- revert NotToken(token);
100
- }
101
-
102
- // MUST have decimals > 0
105
+ // MUST have decimals > 0 (indicator that this is in fact an erc20 token)
103
106
  IERC20Metadata erc20 = IERC20Metadata(token);
104
107
  if(erc20.decimals() == 0) {
105
108
  revert TokenDecimalsZero();
@@ -10,12 +10,13 @@ contract ERC165 is
10
10
  {
11
11
  mapping(bytes4 => bool) private _isSupported;
12
12
 
13
- // @dev register support for ERC165 itself
13
+ // @dev initializes with support for ERC165
14
14
  function initializeERC165() public onlyInitializing() {
15
15
  _isSupported[type(IERC165).interfaceId] = true;
16
16
  }
17
17
 
18
18
  // @dev register support for provided interfaceId
19
+ // includes initialization for ERC165_ID if not yet done
19
20
  function registerInterface(bytes4 interfaceId) public onlyInitializing() {
20
21
  _isSupported[interfaceId] = true;
21
22
  }
@@ -3,7 +3,6 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
- import {IRegistry} from "../registry/IRegistry.sol";
7
6
  import {IRegistryLinked} from "./IRegistryLinked.sol";
8
7
  import {NftId} from "../types/NftId.sol";
9
8
 
@@ -11,15 +10,11 @@ interface INftOwnable is
11
10
  IERC165,
12
11
  IRegistryLinked
13
12
  {
14
- error ErrorInitialOwnerZero();
15
- error ErrorNotOwner(address account);
13
+ error ErrorNftOwnableInitialOwnerZero();
14
+ error ErrorNftOwnableNotOwner(address account);
16
15
 
17
- error ErrorAlreadyLinked(address registry, NftId nftId);
18
- // error ErrorRegistryAlreadyInitialized(address registry);
19
- // error ErrorRegistryNotInitialized();
20
- // error ErrorRegistryAddressZero();
21
- // error ErrorNotRegistry(address registryAddress);
22
- error ErrorContractNotRegistered(address contractAddress);
16
+ error ErrorNftOwnableAlreadyLinked(NftId nftId);
17
+ error ErrorNftOwnableContractNotRegistered(address contractAddress);
23
18
 
24
19
  function linkToRegisteredNftId() external;
25
20
 
@@ -5,9 +5,6 @@ import {IRegistry} from "../registry/IRegistry.sol";
5
5
 
6
6
  interface IRegistryLinked {
7
7
 
8
- error ErrorRegistryAlreadyInitialized(address registry);
9
- error ErrorRegistryNotInitialized();
10
- error ErrorRegistryAddressZero();
11
8
  error ErrorNotRegistry(address registryAddress);
12
9
 
13
10
  function getRegistry() external view returns (IRegistry);
@@ -1,16 +1,16 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {VersionPart} from "../types/Version.sol";
5
- import {ObjectType} from "../types/ObjectType.sol";
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
5
 
7
6
  import {IRegisterable} from "./IRegisterable.sol";
8
7
  import {IVersionable} from "./IVersionable.sol";
8
+ import {ObjectType} from "../types/ObjectType.sol";
9
9
 
10
10
  interface IService is
11
11
  IRegisterable,
12
- IVersionable
12
+ IVersionable,
13
+ IAccessManaged
13
14
  {
14
15
  function getDomain() external pure returns(ObjectType serviceDomain);
15
- function getMajorVersion() external view returns(VersionPart majorVersion);
16
16
  }
@@ -1,11 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Blocknumber} from "../types/Blocknumber.sol";
5
- import {Timestamp} from "../types/Timestamp.sol";
6
4
  import {Version} from "../types/Version.sol";
7
5
 
8
-
9
6
  /// IMPORTANT
10
7
  // Upgradeable contract MUST:
11
8
  // 1) inherit from Versionable
@@ -14,7 +11,7 @@ import {Version} from "../types/Version.sol";
14
11
  // 4) implement internal _upgrade() function with onlyInitializing modifier (1st version MUST revert)
15
12
  // 5) have onlyInitialising modifier for each function callable inside _initialize()/_upgrade() (MUST use different functions for initialization/upgrade and normal operations)
16
13
  // 6) use default empty constructor -> _disableInitializer() is called from Versionable contructor
17
- // 7) use namespace storage
14
+ // 7) use namespace storage (should this be needed)
18
15
  // 8) since now inheritance is used for upgradability, contract MUST BE inherited ONLY by the next version
19
16
  // Upgradeable contract SHOULD:
20
17
  // 9) define all non private methods as virtual (in order to be able to upgrade them latter)
@@ -22,48 +19,29 @@ import {Version} from "../types/Version.sol";
22
19
  // in some cases this ok but not in the others...
23
20
  //
24
21
  // IMPORTANT
25
- // Each version MUST:
22
+ // If introducting/amending storage related to Versionable version MUST:
26
23
  // 1) define namespace storage struct if accessing storage
27
24
  // - DO NOT use structs inside, except
28
25
  // - CAN use structs ONLY inside mappings
29
26
  // 2) ALWAYS define private getter if accessing storage
30
27
  // - MUST use default implementation, CAN change ONLY return type
31
- // - MUST use the same "LOCATION_V1"
32
28
 
33
29
  interface IVersionable {
34
30
 
35
- struct VersionInfo {
36
- Version version;
37
- address implementation;
38
- address activatedBy;
39
- Timestamp activatedAt;
40
- Blocknumber activatedIn;
41
- }
42
-
43
- event LogVersionableInitialized(Version version, address implementation, address activatedBy);
44
-
45
- // TODO uncomment when all implementations are ready
46
31
  /**
47
32
  * @dev IMPORTANT
48
33
  * implementation MUST be guarded by initializer modifier
49
- * implementation MUST call internal function Versionable._updateVersionHistory
50
34
  * new version MUST inherit from previous version
51
35
  */
52
- function initializeVersionable(address implementation, address activatedBy, bytes memory activationData) external;
36
+ function initializeVersionable(address activatedBy, bytes memory activationData) external;
53
37
 
54
38
  /**
55
39
  * @dev
56
40
  * implementation MUST be guarded by reinitializer(version().toUint64()) modifier
57
- * implementation MUST call internal function Versionable._updateVersionHistory
58
41
  * new version MUST inherit from previous version
59
42
  * the first verion MUST revert
60
43
  */
61
- function upgradeVersionable(address implementation, address activatedBy, bytes memory upgradeData) external;
62
-
63
- /**
64
- * @dev returns true if the specified version has been activated for the current contract
65
- */
66
- function isInitialized(Version version) external view returns(bool);
44
+ function upgradeVersionable(bytes memory upgradeData) external;
67
45
 
68
46
  /**
69
47
  * @dev returns version of this contract
@@ -72,25 +50,4 @@ interface IVersionable {
72
50
  */
73
51
  function getVersion() external pure returns(Version);
74
52
 
75
- /**
76
- * @dev returns the number of all deployed versions of this contract
77
- */
78
- function getVersionCount() external view returns(uint256 numberOfVersions);
79
-
80
- /**
81
- * @dev returns the i-th (index) version of this contract
82
- */
83
- function getVersion(uint256 index) external view returns(Version version);
84
-
85
- /**
86
- * @dev returns the i-th (index) version info of this contract
87
- */
88
- function getVersionInfo(Version version) external view returns(VersionInfo memory versionInfo);
89
-
90
- // TODO make sure it is needed here
91
- /**
92
- * @dev returns currently active version
93
- */
94
- function getInitializedVersion() external view returns(uint64);
95
-
96
53
  }
@@ -5,8 +5,7 @@ pragma solidity ^0.8.20;
5
5
 
6
6
  import {ERC165} from "./ERC165.sol";
7
7
  import {INftOwnable} from "./INftOwnable.sol";
8
- import {IRegistry} from "../registry/IRegistry.sol";
9
- import {NftId, zeroNftId} from "../types/NftId.sol";
8
+ import {NftId} from "../types/NftId.sol";
10
9
  import {RegistryLinked} from "./RegistryLinked.sol";
11
10
 
12
11
  contract NftOwnable is
@@ -18,7 +17,6 @@ contract NftOwnable is
18
17
  bytes32 public constant NFT_OWNABLE_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
19
18
 
20
19
  struct NftOwnableStorage {
21
- // IRegistry _registry;
22
20
  NftId _nftId;
23
21
  address _initialOwner;
24
22
  }
@@ -26,7 +24,7 @@ contract NftOwnable is
26
24
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
27
25
  modifier onlyOwner() {
28
26
  if (msg.sender != getOwner()) {
29
- revert ErrorNotOwner(msg.sender);
27
+ revert ErrorNftOwnableNotOwner(msg.sender);
30
28
  }
31
29
  _;
32
30
  }
@@ -42,21 +40,14 @@ contract NftOwnable is
42
40
  virtual
43
41
  onlyInitializing()
44
42
  {
45
- _setInitialOwner(initialOwner);
46
-
47
43
  initializeRegistryLinked(registryAddress);
48
44
  initializeERC165();
49
- registerInterface(type(INftOwnable).interfaceId);
50
- }
51
45
 
46
+ if(initialOwner == address(0)) {
47
+ revert ErrorNftOwnableInitialOwnerZero();
48
+ }
52
49
 
53
- function initializeOwner(address initialOwner)
54
- public
55
- initializer()
56
- {
57
- _setInitialOwner(initialOwner);
58
- initializeERC165();
59
- registerInterface(type(INftOwnable).interfaceId);
50
+ _getNftOwnableStorage()._initialOwner = initialOwner;
60
51
  }
61
52
 
62
53
 
@@ -71,35 +62,22 @@ contract NftOwnable is
71
62
  NftOwnableStorage storage $ = _getNftOwnableStorage();
72
63
 
73
64
  if ($._nftId.gtz()) {
74
- revert ErrorAlreadyLinked(address(getRegistry()), $._nftId);
75
- }
76
-
77
- if (address(getRegistry()) == address(0)) {
78
- revert ErrorRegistryNotInitialized();
65
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
79
66
  }
80
67
 
81
68
  address contractAddress = address(this);
82
69
 
83
70
  if (!getRegistry().isRegistered(contractAddress)) {
84
- revert ErrorContractNotRegistered(contractAddress);
71
+ revert ErrorNftOwnableContractNotRegistered(contractAddress);
85
72
  }
86
73
 
87
74
  $._nftId = getRegistry().getNftId(contractAddress);
88
75
  }
89
76
 
90
-
91
- // function getRegistry() public view virtual override returns (IRegistry) {
92
- // return _getNftOwnableStorage()._registry;
93
- // }
94
-
95
77
  function getNftId() public view virtual override returns (NftId) {
96
78
  return _getNftOwnableStorage()._nftId;
97
79
  }
98
80
 
99
- function getInitialOwner() public view returns (address) {
100
- return _getNftOwnableStorage()._initialOwner;
101
- }
102
-
103
81
  function getOwner() public view virtual override returns (address) {
104
82
  NftOwnableStorage storage $ = _getNftOwnableStorage();
105
83
 
@@ -110,41 +88,22 @@ contract NftOwnable is
110
88
  return $._initialOwner;
111
89
  }
112
90
 
113
- /// @dev set initialOwner
114
- /// initial owner may only be set during initialization
115
- function _setInitialOwner(address initialOwner)
116
- internal
117
- virtual
118
- onlyInitializing()
119
- {
120
- if(initialOwner == address(0)) {
121
- revert ErrorInitialOwnerZero();
122
- }
123
-
124
- _getNftOwnableStorage()._initialOwner = initialOwner;
125
- }
126
-
127
- // TODO check if function can be refactored to work with a registry address set in an initializer
128
91
  /// @dev used in constructor of registry service manager
129
92
  // links ownership of registry service manager ot nft owner of registry service
130
93
  function _linkToNftOwnable(
131
- address registryAddress,
132
94
  address nftOwnableAddress
133
95
  )
134
96
  internal
135
- onlyOwner()
136
97
  returns (NftId)
137
98
  {
138
99
  NftOwnableStorage storage $ = _getNftOwnableStorage();
139
100
 
140
101
  if ($._nftId.gtz()) {
141
- revert ErrorAlreadyLinked(address(getRegistry()), $._nftId);
102
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
142
103
  }
143
104
 
144
- _setRegistry(registryAddress);
145
-
146
105
  if (!getRegistry().isRegistered(nftOwnableAddress)) {
147
- revert ErrorContractNotRegistered(nftOwnableAddress);
106
+ revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
148
107
  }
149
108
 
150
109
  $._nftId = getRegistry().getNftId(nftOwnableAddress);
@@ -153,35 +112,6 @@ contract NftOwnable is
153
112
  }
154
113
 
155
114
 
156
- // function _setRegistry(address registryAddress)
157
- // private
158
- // {
159
- // NftOwnableStorage storage $ = _getNftOwnableStorage();
160
-
161
- // if (address($._registry) != address(0)) {
162
- // revert ErrorRegistryAlreadyInitialized(address($._registry));
163
- // }
164
-
165
- // if (registryAddress == address(0)) {
166
- // revert ErrorRegistryAddressZero();
167
- // }
168
-
169
- // if (registryAddress.code.length == 0) {
170
- // revert ErrorNotRegistry(registryAddress);
171
- // }
172
-
173
- // $._registry = IRegistry(registryAddress);
174
-
175
- // try $._registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
176
- // if (!isRegistry) {
177
- // revert ErrorNotRegistry(registryAddress);
178
- // }
179
- // } catch {
180
- // revert ErrorNotRegistry(registryAddress);
181
- // }
182
- // }
183
-
184
-
185
115
  function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
186
116
  assembly {
187
117
  $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1