@etherisc/gif-next 0.0.2-ca9d515-311 → 0.0.2-cbfb727-329

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 (508) hide show
  1. package/README.md +8 -13
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1376 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +73 -83
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +283 -1354
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +314 -183
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +367 -2999
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +602 -194
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +426 -279
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +443 -503
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +278 -174
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  36. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +44 -14
  38. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
  40. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  47. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  52. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  54. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
  56. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  57. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +329 -263
  58. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
  60. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  62. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.json +1407 -0
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +708 -0
  68. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  70. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
  72. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1376 -0
  74. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
  76. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
  78. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +743 -0
  80. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  81. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +277 -290
  82. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  83. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +254 -243
  84. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +861 -0
  86. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +85 -179
  88. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  90. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
  92. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  94. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  96. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  97. package/artifacts/contracts/product/Product.sol/Product.json +1198 -0
  98. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  100. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  102. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  104. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +244 -133
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +147 -236
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +261 -239
  112. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +195 -338
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +286 -146
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +132 -57
  122. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  123. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  124. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  125. package/artifacts/contracts/shared/Component.sol/Component.json +873 -0
  126. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +631 -0
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  130. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  131. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +257 -74
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  139. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +285 -65
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -53
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  154. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  155. package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  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 +2 -152
  162. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  163. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → staking/IStakingService.sol/IStakingService.json} +209 -207
  164. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  165. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +628 -0
  166. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  167. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
  168. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  169. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  170. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  171. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  172. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  173. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  174. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  175. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  176. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  177. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  178. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  179. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  180. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  181. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  182. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  183. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  184. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  185. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  186. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  187. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  188. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  189. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  190. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  191. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  192. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  193. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  194. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  195. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  196. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  197. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  198. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  200. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  201. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  202. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  203. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  204. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  206. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  207. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  208. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  209. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  210. package/contracts/distribution/Distribution.sol +285 -0
  211. package/contracts/distribution/DistributionService.sol +348 -0
  212. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +11 -14
  213. package/contracts/distribution/IDistributionComponent.sol +71 -0
  214. package/contracts/distribution/IDistributionService.sol +87 -0
  215. package/contracts/instance/BundleManager.sol +22 -25
  216. package/contracts/instance/IInstance.sol +56 -39
  217. package/contracts/instance/IInstanceService.sol +55 -14
  218. package/contracts/instance/Instance.sol +145 -381
  219. package/contracts/instance/InstanceAccessManager.sol +431 -178
  220. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  221. package/contracts/instance/InstanceReader.sol +102 -49
  222. package/contracts/instance/InstanceService.sol +241 -194
  223. package/contracts/instance/InstanceServiceManager.sol +6 -9
  224. package/contracts/instance/InstanceStore.sol +211 -0
  225. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  226. package/contracts/instance/base/IKeyValueStore.sol +5 -5
  227. package/contracts/instance/base/ILifecycle.sol +3 -3
  228. package/contracts/instance/base/KeyValueStore.sol +22 -42
  229. package/contracts/instance/base/Lifecycle.sol +27 -7
  230. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -35
  231. package/contracts/instance/module/IAccess.sol +37 -21
  232. package/contracts/instance/module/IBundle.sol +11 -8
  233. package/contracts/instance/module/IComponents.sol +41 -0
  234. package/contracts/instance/module/IDistribution.sol +7 -4
  235. package/contracts/instance/module/IPolicy.sol +47 -15
  236. package/contracts/instance/module/IRisk.sol +1 -1
  237. package/contracts/instance/module/ISetup.sol +9 -22
  238. package/contracts/instance/module/ITreasury.sol +2 -2
  239. package/contracts/pool/BundleService.sol +382 -0
  240. package/contracts/{instance/service → pool}/BundleServiceManager.sol +10 -13
  241. package/contracts/pool/IBundleService.sol +118 -0
  242. package/contracts/pool/IPoolComponent.sol +114 -0
  243. package/contracts/pool/IPoolService.sol +114 -0
  244. package/contracts/pool/Pool.sol +302 -0
  245. package/contracts/pool/PoolService.sol +403 -0
  246. package/contracts/{instance/service → pool}/PoolServiceManager.sol +10 -13
  247. package/contracts/product/ApplicationService.sol +186 -0
  248. package/contracts/product/ApplicationServiceManager.sol +35 -0
  249. package/contracts/product/ClaimService.sol +437 -0
  250. package/contracts/product/ClaimServiceManager.sol +35 -0
  251. package/contracts/product/IApplicationService.sol +62 -0
  252. package/contracts/product/IClaimService.sol +90 -0
  253. package/contracts/product/IPolicyService.sol +80 -0
  254. package/contracts/product/IPricingService.sol +37 -0
  255. package/contracts/product/IProductComponent.sol +41 -0
  256. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  257. package/contracts/product/PolicyService.sol +376 -0
  258. package/contracts/{instance/service → product}/PolicyServiceManager.sol +7 -7
  259. package/contracts/product/PricingService.sol +275 -0
  260. package/contracts/product/PricingServiceManager.sol +51 -0
  261. package/contracts/product/Product.sol +375 -0
  262. package/contracts/product/ProductService.sol +210 -0
  263. package/contracts/{instance/service → product}/ProductServiceManager.sol +7 -7
  264. package/contracts/registry/ChainNft.sol +9 -1
  265. package/contracts/registry/IRegistry.sol +42 -22
  266. package/contracts/registry/IRegistryService.sol +32 -16
  267. package/contracts/registry/ITransferInterceptor.sol +1 -0
  268. package/contracts/registry/Registry.sol +243 -224
  269. package/contracts/registry/RegistryAccessManager.sol +216 -0
  270. package/contracts/registry/RegistryService.sol +109 -182
  271. package/contracts/registry/RegistryServiceManager.sol +21 -41
  272. package/contracts/registry/ReleaseManager.sol +324 -0
  273. package/contracts/registry/TokenRegistry.sol +22 -17
  274. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  275. package/contracts/shared/Component.sol +271 -0
  276. package/contracts/shared/ComponentService.sol +150 -0
  277. package/contracts/shared/ERC165.sol +14 -12
  278. package/contracts/shared/IComponent.sol +90 -0
  279. package/contracts/shared/INftOwnable.sol +12 -11
  280. package/contracts/shared/IPolicyHolder.sol +40 -0
  281. package/contracts/shared/IRegisterable.sol +4 -6
  282. package/contracts/shared/IRegistryLinked.sol +11 -0
  283. package/contracts/shared/IService.sol +7 -4
  284. package/contracts/shared/IVersionable.sol +5 -48
  285. package/contracts/shared/NftOwnable.sol +64 -80
  286. package/contracts/shared/PolicyHolder.sol +94 -0
  287. package/contracts/shared/ProxyManager.sol +100 -25
  288. package/contracts/shared/Registerable.sol +26 -41
  289. package/contracts/shared/RegistryLinked.sol +43 -0
  290. package/contracts/shared/Service.sol +41 -24
  291. package/contracts/shared/TokenHandler.sol +14 -6
  292. package/contracts/shared/Versionable.sol +4 -92
  293. package/contracts/staking/IStakingService.sol +102 -0
  294. package/contracts/staking/StakeingServiceManager.sol +37 -0
  295. package/contracts/staking/StakingService.sol +166 -0
  296. package/contracts/type/Amount.sol +109 -0
  297. package/contracts/{types → type}/Blocknumber.sol +1 -0
  298. package/contracts/type/ClaimId.sol +75 -0
  299. package/contracts/{types → type}/DistributorType.sol +2 -2
  300. package/contracts/{types → type}/Fee.sol +17 -8
  301. package/contracts/{types → type}/NftId.sol +8 -0
  302. package/contracts/{types → type}/NftIdSet.sol +1 -1
  303. package/contracts/{types → type}/ObjectType.sol +16 -7
  304. package/contracts/type/PayoutId.sol +82 -0
  305. package/contracts/{types → type}/Referral.sol +4 -0
  306. package/contracts/{types → type}/RoleId.sol +26 -21
  307. package/contracts/type/Seconds.sol +54 -0
  308. package/contracts/{types → type}/StateId.sol +7 -2
  309. package/contracts/{types → type}/Timestamp.sol +18 -13
  310. package/contracts/{types → type}/UFixed.sol +1 -0
  311. package/contracts/{types → type}/Version.sol +1 -0
  312. package/package.json +3 -3
  313. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  314. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  315. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  316. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  317. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -368
  318. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  319. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  320. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  321. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  322. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  323. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  324. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  325. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  326. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  327. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  328. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  330. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  332. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  334. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  336. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  338. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  340. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  342. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  344. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  346. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  348. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  351. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  353. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  355. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  357. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  359. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  361. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  363. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  365. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  367. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  368. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  369. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  370. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  371. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  372. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  373. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
  374. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  375. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  376. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  377. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  378. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  379. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  380. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  381. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  382. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -923
  383. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  384. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -440
  385. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  386. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  387. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  388. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -684
  389. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  390. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  391. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  392. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  393. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  394. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  395. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  396. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  397. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  398. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  399. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -984
  400. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  401. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
  402. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  403. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -718
  404. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  405. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -428
  406. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  407. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -768
  408. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  409. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  410. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  411. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  412. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  413. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  414. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  415. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  416. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  417. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  418. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  419. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  420. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  421. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  422. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  423. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  424. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  425. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  426. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  427. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  428. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  429. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  430. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  431. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  432. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  433. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  434. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  435. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  436. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  437. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  438. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  439. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  440. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  441. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  442. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  443. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  444. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  445. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  446. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  447. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  448. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  449. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  450. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  451. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  452. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  453. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  454. package/contracts/components/BaseComponent.sol +0 -132
  455. package/contracts/components/Distribution.sol +0 -163
  456. package/contracts/components/IBaseComponent.sol +0 -31
  457. package/contracts/components/IDistributionComponent.sol +0 -44
  458. package/contracts/components/IPoolComponent.sol +0 -66
  459. package/contracts/components/IProductComponent.sol +0 -35
  460. package/contracts/components/Pool.sol +0 -271
  461. package/contracts/components/Product.sol +0 -292
  462. package/contracts/experiment/cloning/Cloner.sol +0 -47
  463. package/contracts/experiment/errors/Require.sol +0 -38
  464. package/contracts/experiment/errors/Revert.sol +0 -44
  465. package/contracts/experiment/inheritance/A.sol +0 -53
  466. package/contracts/experiment/inheritance/B.sol +0 -28
  467. package/contracts/experiment/inheritance/C.sol +0 -34
  468. package/contracts/experiment/inheritance/IA.sol +0 -13
  469. package/contracts/experiment/inheritance/IB.sol +0 -10
  470. package/contracts/experiment/inheritance/IC.sol +0 -12
  471. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  472. package/contracts/experiment/statemachine/ISM.sol +0 -25
  473. package/contracts/experiment/statemachine/SM.sol +0 -57
  474. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  475. package/contracts/experiment/types/TypeA.sol +0 -47
  476. package/contracts/experiment/types/TypeB.sol +0 -29
  477. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  478. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  479. package/contracts/instance/IInstanceBase.sol +0 -26
  480. package/contracts/instance/InstanceBase.sol +0 -41
  481. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  482. package/contracts/instance/base/IInstanceBase.sol +0 -23
  483. package/contracts/instance/service/BundleService.sol +0 -260
  484. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  485. package/contracts/instance/service/DistributionService.sol +0 -118
  486. package/contracts/instance/service/IBundleService.sol +0 -45
  487. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  488. package/contracts/instance/service/IDistributionService.sol +0 -12
  489. package/contracts/instance/service/IPolicyService.sol +0 -87
  490. package/contracts/instance/service/IPoolService.sol +0 -20
  491. package/contracts/instance/service/PolicyService.sol +0 -508
  492. package/contracts/instance/service/PoolService.sol +0 -124
  493. package/contracts/instance/service/ProductService.sol +0 -173
  494. package/contracts/shared/ContractDeployerLib.sol +0 -72
  495. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  496. package/contracts/test/TestFee.sol +0 -25
  497. package/contracts/test/TestRegisterable.sol +0 -18
  498. package/contracts/test/TestRoleId.sol +0 -14
  499. package/contracts/test/TestService.sol +0 -24
  500. package/contracts/test/TestToken.sol +0 -26
  501. package/contracts/test/TestVersion.sol +0 -44
  502. package/contracts/test/TestVersionable.sol +0 -17
  503. package/contracts/test/Usdc.sol +0 -26
  504. package/contracts/types/ChainId.sol +0 -38
  505. package/contracts/types/NumberId.sol +0 -52
  506. /package/contracts/{types → type}/AddressSet.sol +0 -0
  507. /package/contracts/{types → type}/Key32.sol +0 -0
  508. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -3,8 +3,6 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
5
 
6
- import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
7
-
8
6
  import {Registry} from "./Registry.sol";
9
7
  import {IVersionable} from "../shared/IVersionable.sol";
10
8
  import {ProxyManager} from "../shared/ProxyManager.sol";
@@ -17,51 +15,41 @@ contract RegistryServiceManager is
17
15
  {
18
16
  bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
19
17
 
20
- AccessManager private _accessManager;
21
- RegistryService private _registryService;
22
- TokenRegistry private _tokenRegistry;
18
+ RegistryService private immutable _registryService;
23
19
 
24
20
  /// @dev initializes proxy manager with registry service implementation and deploys registry
25
21
  constructor(
26
- address accessManager
27
- )
28
- ProxyManager()
22
+ address initialAuthority, // used by implementation
23
+ address registryAddress) // used by implementation
24
+ ProxyManager(registryAddress)
29
25
  {
30
- _accessManager = AccessManager(accessManager);
31
-
32
- bytes memory initializationData = abi.encode(accessManager, type(Registry).creationCode);
33
-
26
+ require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
27
+ require(registryAddress > address(0), "RegistryServiceManager: registry is 0");
28
+
29
+ // implementation's initializer func `data` argument
30
+ RegistryService srv = new RegistryService();
31
+ bytes memory data = abi.encode(registryAddress, initialAuthority);
34
32
  IVersionable versionable = deploy(
35
- address(new RegistryService()),
36
- initializationData);
33
+ address(srv),
34
+ data);
37
35
 
38
36
  _registryService = RegistryService(address(versionable));
39
37
 
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;
38
+ // _linkToNftOwnable(address(_registryService));
53
39
  }
54
40
 
55
- //--- view functions ----------------------------------------------------//
41
+ // // from IRegisterable
56
42
 
57
- function getAccessManager()
58
- external
59
- view
60
- returns (AccessManager)
43
+ // // IMPORTANT: registry here and in constructor MUST be the same
44
+ function linkOwnershipToServiceNft()
45
+ public
46
+ onlyOwner
61
47
  {
62
- return _accessManager;
48
+ _linkToNftOwnable(address(_registryService));
63
49
  }
64
50
 
51
+ //--- view functions ----------------------------------------------------//
52
+
65
53
  function getRegistryService()
66
54
  external
67
55
  view
@@ -69,12 +57,4 @@ contract RegistryServiceManager is
69
57
  {
70
58
  return _registryService;
71
59
  }
72
-
73
- function getTokenRegistry()
74
- external
75
- view
76
- returns (TokenRegistry)
77
- {
78
- return _tokenRegistry;
79
- }
80
60
  }
@@ -0,0 +1,324 @@
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 "../type/NftId.sol";
7
+ import {RoleId} from "../type/RoleId.sol";
8
+ import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
9
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
10
+ import {Timestamp, TimestampLib} from "../type/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
+ // _verifyService
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 major version
59
+ VersionPart _latest;// latest active major version
60
+ VersionPart _next;// major version to create and activate
61
+
62
+ mapping(VersionPart majorVersion => IRegistry.ReleaseInfo info) _release;
63
+
64
+ mapping(VersionPart majorVersion => mapping(ObjectType serviceDomain => bytes4[])) _selectors; // 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 majorVersion => 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 majorVersion = _next;
150
+ ObjectType domain = REGISTRY();
151
+ _verifyService(service, majorVersion, domain);
152
+ _createRelease(service.getFunctionConfigs());
153
+
154
+ nftId = _registry.registerService(info, majorVersion, domain);
155
+
156
+ // external call
157
+ service.linkToRegisteredNftId();
158
+ }
159
+
160
+ // TODO adding service to release -> synchronized with proxy upgrades or simple addServiceToRelease(service, version, selector)?
161
+ // TODO removing service from release? -> set _active to false forever, but keep all other records?
162
+ function registerService(IService service)
163
+ external
164
+ restricted // GIF_MANAGER_ROLE
165
+ returns(NftId nftId)
166
+ {
167
+ if(!service.supportsInterface(type(IService).interfaceId)) {
168
+ revert NotService();
169
+ }
170
+
171
+ IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
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);
175
+
176
+ // setup and grant unique role if service does registrations
177
+ bytes4[] memory selectors = _selectors[majorVersion][domain];
178
+ address registryService = _registry.getServiceAddress(REGISTRY(), majorVersion);
179
+ if(selectors.length > 0) {
180
+ _accessManager.setAndGrantUniqueRole(
181
+ address(service),
182
+ registryService,
183
+ selectors);
184
+ }
185
+
186
+ _awaitingRegistration--;
187
+
188
+ nftId = _registry.registerService(info, majorVersion, domain);
189
+
190
+ // external call
191
+ service.linkToRegisteredNftId();
192
+ }
193
+
194
+ //--- view functions ----------------------------------------------------//
195
+
196
+ function isActiveRegistryService(address service) external view returns(bool)
197
+ {
198
+ return _active[service];
199
+ }
200
+
201
+ function isValidRelease(VersionPart version) external view returns(bool)
202
+ {
203
+ return _valid[version];
204
+ }
205
+
206
+ function getRegistry() external view returns(address)
207
+ {
208
+ return (address(_registry));
209
+ }
210
+
211
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
212
+ {
213
+ return _release[version];
214
+ }
215
+
216
+ function getNextVersion() public view returns(VersionPart)
217
+ {
218
+ return _next;
219
+ }
220
+
221
+ function getLatestVersion() external view returns(VersionPart) {
222
+ return _latest;
223
+ }
224
+
225
+ function getInitialVersion() external view returns(VersionPart) {
226
+ return _initial;
227
+ }
228
+
229
+ //--- private functions ----------------------------------------------------//
230
+
231
+ function _getAndVerifyContractInfo(
232
+ IService service,
233
+ ObjectType expectedType,
234
+ address expectedOwner // assume always valid, can not be 0
235
+ )
236
+ internal
237
+ // view
238
+ returns(
239
+ IRegistry.ObjectInfo memory info
240
+ )
241
+ {
242
+ info = service.getInitialInfo();
243
+ info.objectAddress = address(service);
244
+ info.isInterceptor = false; // service is never interceptor, at least now
245
+
246
+ if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
247
+ revert UnexpectedRegisterableType(expectedType, info.objectType);
248
+ }
249
+
250
+ address owner = info.initialOwner;
251
+
252
+ if(owner != expectedOwner) { // registerable owner protection
253
+ revert NotRegisterableOwner(expectedOwner);
254
+ }
255
+
256
+ if(owner == address(service)) {
257
+ revert SelfRegistration();
258
+ }
259
+
260
+ if(_registry.isRegistered(owner)) {
261
+ revert RegisterableOwnerIsRegistered();
262
+ }
263
+ }
264
+
265
+ function _verifyService(
266
+ IService service,
267
+ VersionPart expectedVersion,
268
+ ObjectType expectedDomain
269
+ )
270
+ internal
271
+ view
272
+ returns(ObjectType)
273
+ {
274
+ Version version = service.getVersion();
275
+ VersionPart majorVersion = version.toMajorPart();
276
+ if(majorVersion != expectedVersion) {
277
+ revert UnexpectedServiceVersion(expectedVersion, majorVersion);
278
+ }
279
+
280
+ if(service.getDomain() != expectedDomain) {
281
+ revert UnexpectedServiceDomain(expectedDomain, service.getDomain());
282
+ }
283
+
284
+ return expectedDomain;
285
+ }
286
+
287
+ // TODO check if registry supports types specified in the config array
288
+ function _createRelease(IRegistryService.FunctionConfig[] memory config)
289
+ internal
290
+ {
291
+ VersionPart version = getNextVersion();
292
+
293
+ if(config.length == 0) {
294
+ revert ConfigMissing();
295
+ }
296
+ // always in release
297
+ _release[version].domains.push(REGISTRY());
298
+ for(uint idx = 0; idx < config.length; idx++)
299
+ {
300
+ ObjectType domain = config[idx].serviceDomain;
301
+ // not "registry service" / zero domain
302
+ if(
303
+ domain == REGISTRY() ||
304
+ domain.eqz()
305
+ ) { revert ConfigServiceDomainInvalid(idx, domain); }
306
+
307
+ bytes4[] memory selectors = config[idx].selectors;
308
+
309
+ // 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
310
+ // no overwrite
311
+ if(_selectors[version][domain].length > 0) {
312
+ revert SelectorAlreadyExists(version, domain);
313
+ }
314
+
315
+ _selectors[version][domain] = selectors;
316
+ _release[version].domains.push(domain);
317
+ }
318
+ // TODO set when activated?
319
+ _release[version].createdAt = TimestampLib.blockTimestamp();
320
+ //_release[version].updatedAt = TimestampLib.blockTimestamp();
321
+
322
+ _awaitingRegistration = config.length;
323
+ }
324
+ }
@@ -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 "../type/Version.sol";
10
+ import {REGISTRY} from "../type/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
 
@@ -28,20 +26,32 @@ contract TokenRegistry is
28
26
  mapping(address token => bool registered) internal _registered;
29
27
  mapping(address token => mapping(VersionPart majorVersion => bool isActive)) internal _active;
30
28
 
31
- constructor()
32
- NftOwnable()
33
- { }
29
+ constructor(
30
+ address registry
31
+ )
32
+ {
33
+ initialize(registry);
34
+ }
35
+
36
+ function initialize(address registry)
37
+ public
38
+ initializer()
39
+ {
40
+ initializeNftOwnable(msg.sender, registry);
41
+ }
34
42
 
35
43
 
36
44
  /// @dev link ownership of token registry to nft owner of registry service
45
+ // TODO latter registry service will get new release, new address, new nft, TokenRegistry will not catch that -> use AccessManaged only for services
37
46
  function linkToNftOwnable(address registryAddress)
38
47
  external
39
48
  onlyOwner
40
49
  {
41
50
  IRegistry registry = IRegistry(registryAddress);
42
- address registryServiceAddress = registry.getServiceAddress(REGISTRY_SERVICE_NAME, registry.getMajorVersion());
51
+ // TODO use _latest instead of _initial -> but _latest is 0 before first release activation
52
+ address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getNextVersion());
43
53
 
44
- _linkToNftOwnable(registryAddress, registryServiceAddress);
54
+ _linkToNftOwnable(registryServiceAddress);
45
55
  }
46
56
 
47
57
  /// @dev token state is informative, registry have no clue about used tokens
@@ -59,7 +69,7 @@ contract TokenRegistry is
59
69
  // verify valid major version
60
70
  // ensure major version increments is one
61
71
  uint256 version = majorVersion.toInt();
62
- if (version < _registry.getMajorVersionMin().toInt() || version > _registry.getMajorVersionMax().toInt()) {
72
+ if (!getRegistry().isValidRelease(majorVersion)) {
63
73
  revert TokenMajorVersionInvalid(majorVersion);
64
74
  }
65
75
 
@@ -80,7 +90,7 @@ contract TokenRegistry is
80
90
  return _registered[token];
81
91
  }
82
92
 
83
- function isActive(address token, VersionPart majorVersion) external view returns (bool) {
93
+ function isActive(address token, VersionPart majorVersion) external view returns (bool) {
84
94
  return _active[token][majorVersion];
85
95
  }
86
96
 
@@ -92,12 +102,7 @@ contract TokenRegistry is
92
102
  revert NotContract(token);
93
103
  }
94
104
 
95
- // MUST not be GIF registerable
96
- if(ERC165Checker.supportsInterface(token, type(IRegisterable).interfaceId)) {
97
- revert NotToken(token);
98
- }
99
-
100
- // MUST have decimals > 0
105
+ // MUST have decimals > 0 (indicator that this is in fact an erc20 token)
101
106
  IERC20Metadata erc20 = IERC20Metadata(token);
102
107
  if(erc20.decimals() == 0) {
103
108
  revert TokenDecimalsZero();
@@ -0,0 +1,13 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
5
+
6
+
7
+ contract AccessManagerUpgradeableInitializeable is AccessManagerUpgradeable {
8
+
9
+ function initialize(address initialAdmin) initializer public {
10
+ __AccessManager_init(initialAdmin);
11
+ }
12
+
13
+ }