@etherisc/gif-next 0.0.2-ecbd488-936 → 0.0.2-ed3b1b0-046

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 (493) hide show
  1. package/README.md +71 -14
  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 +819 -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 +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +415 -776
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +314 -178
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +452 -3067
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
  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 +443 -257
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +446 -398
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +319 -132
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +93 -14
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  54. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +735 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  58. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +332 -336
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  60. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  62. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  64. package/artifacts/contracts/pool/Pool.sol/Pool.json +1407 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  66. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +747 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +687 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  80. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  82. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +651 -0
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  84. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +237 -288
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  86. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +861 -0
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  88. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +162 -166
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  92. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +779 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  94. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  96. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +727 -0
  97. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  98. package/artifacts/contracts/product/Product.sol/Product.json +1198 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  100. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +679 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +319 -129
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +268 -255
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +339 -222
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  114. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +238 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +313 -354
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +323 -135
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +846 -0
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +132 -57
  123. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  124. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  125. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  126. package/artifacts/contracts/shared/Component.sol/Component.json +873 -0
  127. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentService.sol/ComponentService.json} +271 -180
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  131. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  132. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +636 -0
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  136. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  140. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  141. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  148. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -53
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  154. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  155. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  158. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  160. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  162. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  163. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  164. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → staking/IStakingService.sol/IStakingService.json} +226 -145
  165. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  166. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
  167. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  168. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -0
  169. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  170. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  171. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  172. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  173. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  174. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  175. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  176. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  177. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  178. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  179. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  180. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  181. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  182. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  183. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  185. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  186. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  187. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  188. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  189. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  190. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  191. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  192. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  193. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  194. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  195. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  197. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  198. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  199. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  200. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  201. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  202. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  203. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  204. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  205. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  206. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  207. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  208. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  209. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  210. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  211. package/contracts/distribution/Distribution.sol +285 -0
  212. package/contracts/distribution/DistributionService.sol +351 -0
  213. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +20 -20
  214. package/contracts/distribution/IDistributionComponent.sol +71 -0
  215. package/contracts/distribution/IDistributionService.sol +87 -0
  216. package/contracts/instance/BundleManager.sol +126 -0
  217. package/contracts/instance/IInstance.sol +60 -31
  218. package/contracts/instance/IInstanceService.sol +56 -13
  219. package/contracts/instance/Instance.sol +149 -363
  220. package/contracts/instance/InstanceAccessManager.sol +432 -177
  221. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  222. package/contracts/instance/InstanceReader.sol +109 -47
  223. package/contracts/instance/InstanceService.sol +246 -140
  224. package/contracts/instance/InstanceServiceManager.sol +12 -25
  225. package/contracts/instance/InstanceStore.sol +211 -0
  226. package/contracts/instance/base/Cloneable.sol +51 -0
  227. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  228. package/contracts/instance/base/ILifecycle.sol +3 -3
  229. package/contracts/instance/base/KeyValueStore.sol +44 -47
  230. package/contracts/instance/base/Lifecycle.sol +28 -7
  231. package/contracts/instance/base/ObjectManager.sol +82 -0
  232. package/contracts/instance/module/IAccess.sol +37 -21
  233. package/contracts/instance/module/IBundle.sol +11 -8
  234. package/contracts/instance/module/IComponents.sol +41 -0
  235. package/contracts/instance/module/IDistribution.sol +7 -4
  236. package/contracts/instance/module/IPolicy.sol +50 -17
  237. package/contracts/instance/module/IRisk.sol +1 -1
  238. package/contracts/instance/module/ISetup.sol +11 -22
  239. package/contracts/instance/module/ITreasury.sol +2 -2
  240. package/contracts/pool/BundleService.sol +384 -0
  241. package/contracts/pool/BundleServiceManager.sol +42 -0
  242. package/contracts/pool/IBundleService.sol +118 -0
  243. package/contracts/pool/IPoolComponent.sol +114 -0
  244. package/contracts/pool/IPoolService.sol +114 -0
  245. package/contracts/pool/Pool.sol +302 -0
  246. package/contracts/pool/PoolService.sol +404 -0
  247. package/contracts/pool/PoolServiceManager.sol +42 -0
  248. package/contracts/product/ApplicationService.sol +187 -0
  249. package/contracts/product/ApplicationServiceManager.sol +38 -0
  250. package/contracts/product/ClaimService.sol +443 -0
  251. package/contracts/product/ClaimServiceManager.sol +38 -0
  252. package/contracts/product/IApplicationService.sol +62 -0
  253. package/contracts/product/IClaimService.sol +93 -0
  254. package/contracts/product/IPolicyService.sol +80 -0
  255. package/contracts/product/IPricingService.sol +37 -0
  256. package/contracts/product/IProductComponent.sol +41 -0
  257. package/contracts/product/IProductService.sol +40 -0
  258. package/contracts/product/PolicyService.sol +378 -0
  259. package/contracts/product/PolicyServiceManager.sol +42 -0
  260. package/contracts/product/PricingService.sol +276 -0
  261. package/contracts/product/PricingServiceManager.sol +42 -0
  262. package/contracts/product/Product.sol +379 -0
  263. package/contracts/product/ProductService.sol +212 -0
  264. package/contracts/product/ProductServiceManager.sol +42 -0
  265. package/contracts/registry/ChainNft.sol +9 -1
  266. package/contracts/registry/IRegistry.sol +56 -27
  267. package/contracts/registry/IRegistryService.sol +36 -28
  268. package/contracts/registry/ITransferInterceptor.sol +1 -0
  269. package/contracts/registry/Registry.sol +259 -232
  270. package/contracts/registry/RegistryAccessManager.sol +132 -0
  271. package/contracts/registry/RegistryService.sol +81 -208
  272. package/contracts/registry/RegistryServiceManager.sol +34 -42
  273. package/contracts/registry/ReleaseManager.sol +382 -0
  274. package/contracts/registry/TokenRegistry.sol +22 -17
  275. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  276. package/contracts/shared/Component.sol +271 -0
  277. package/contracts/shared/ComponentService.sol +141 -0
  278. package/contracts/shared/ERC165.sol +14 -12
  279. package/contracts/shared/IComponent.sol +90 -0
  280. package/contracts/shared/INftOwnable.sol +12 -11
  281. package/contracts/shared/IPolicyHolder.sol +40 -0
  282. package/contracts/shared/IRegisterable.sol +4 -6
  283. package/contracts/shared/IRegistryLinked.sol +11 -0
  284. package/contracts/shared/IService.sol +7 -4
  285. package/contracts/shared/IVersionable.sol +5 -48
  286. package/contracts/shared/NftOwnable.sol +64 -80
  287. package/contracts/shared/PolicyHolder.sol +94 -0
  288. package/contracts/shared/ProxyManager.sol +126 -25
  289. package/contracts/shared/Registerable.sol +26 -41
  290. package/contracts/shared/RegistryLinked.sol +43 -0
  291. package/contracts/shared/Service.sol +41 -24
  292. package/contracts/shared/TokenHandler.sol +14 -6
  293. package/contracts/shared/Versionable.sol +4 -92
  294. package/contracts/staking/IStakingService.sol +102 -0
  295. package/contracts/staking/StakingService.sol +169 -0
  296. package/contracts/staking/StakingServiceManager.sol +40 -0
  297. package/contracts/type/Amount.sol +109 -0
  298. package/contracts/{types → type}/Blocknumber.sol +1 -0
  299. package/contracts/type/ClaimId.sol +75 -0
  300. package/contracts/{types → type}/DistributorType.sol +2 -2
  301. package/contracts/{types → type}/Fee.sol +17 -8
  302. package/contracts/{types → type}/NftId.sol +8 -0
  303. package/contracts/type/NftIdSet.sol +62 -0
  304. package/contracts/{types → type}/ObjectType.sol +17 -7
  305. package/contracts/type/PayoutId.sol +82 -0
  306. package/contracts/{types → type}/Referral.sol +4 -0
  307. package/contracts/type/RoleId.sol +139 -0
  308. package/contracts/type/Seconds.sol +54 -0
  309. package/contracts/{types → type}/StateId.sol +7 -2
  310. package/contracts/{types → type}/Timestamp.sol +18 -13
  311. package/contracts/{types → type}/UFixed.sol +1 -0
  312. package/contracts/{types → type}/Version.sol +1 -0
  313. package/package.json +3 -3
  314. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  315. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  316. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  317. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  318. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  319. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  320. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  321. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  322. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  323. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  324. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  325. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  326. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  327. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
  328. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  329. package/artifacts/contracts/components/Product.sol/Product.json +0 -719
  330. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  332. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  334. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  336. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  338. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  340. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  342. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  344. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  346. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  348. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  350. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  353. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  355. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  357. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  359. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  361. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  363. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  365. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  367. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  369. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  370. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  371. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  372. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  373. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  374. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  375. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  376. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  377. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  378. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  379. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  380. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  381. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  382. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  383. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  384. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  385. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  386. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  387. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  388. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -839
  389. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  390. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  391. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  392. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1046
  393. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  394. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -448
  395. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  396. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  397. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  398. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  399. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  400. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  401. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  402. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  403. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  404. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  405. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  406. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  407. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  408. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  409. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  410. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  411. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  412. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  413. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  414. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  415. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  416. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  417. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  418. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  419. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  420. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  421. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  422. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  423. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  424. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  425. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  426. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  427. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  428. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  429. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  430. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  431. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  432. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  433. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  434. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  435. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  436. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  437. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  438. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  439. package/contracts/components/BaseComponent.sol +0 -91
  440. package/contracts/components/Distribution.sol +0 -159
  441. package/contracts/components/IBaseComponent.sol +0 -25
  442. package/contracts/components/IDistributionComponent.sol +0 -44
  443. package/contracts/components/IPoolComponent.sol +0 -62
  444. package/contracts/components/IProductComponent.sol +0 -35
  445. package/contracts/components/Pool.sol +0 -242
  446. package/contracts/components/Product.sol +0 -284
  447. package/contracts/experiment/cloning/Cloner.sol +0 -47
  448. package/contracts/experiment/errors/Require.sol +0 -38
  449. package/contracts/experiment/errors/Revert.sol +0 -44
  450. package/contracts/experiment/inheritance/A.sol +0 -53
  451. package/contracts/experiment/inheritance/B.sol +0 -28
  452. package/contracts/experiment/inheritance/C.sol +0 -34
  453. package/contracts/experiment/inheritance/IA.sol +0 -13
  454. package/contracts/experiment/inheritance/IB.sol +0 -10
  455. package/contracts/experiment/inheritance/IC.sol +0 -12
  456. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  457. package/contracts/experiment/statemachine/ISM.sol +0 -25
  458. package/contracts/experiment/statemachine/SM.sol +0 -57
  459. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  460. package/contracts/experiment/types/TypeA.sol +0 -47
  461. package/contracts/experiment/types/TypeB.sol +0 -29
  462. package/contracts/instance/AccessManagedSimple.sol +0 -115
  463. package/contracts/instance/AccessManagerSimple.sol +0 -692
  464. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  465. package/contracts/instance/base/ComponentServiceBase.sol +0 -124
  466. package/contracts/instance/base/IInstanceBase.sol +0 -23
  467. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  468. package/contracts/instance/service/DistributionService.sol +0 -88
  469. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  470. package/contracts/instance/service/IDistributionService.sol +0 -12
  471. package/contracts/instance/service/IPoolService.sol +0 -37
  472. package/contracts/instance/service/IProductService.sol +0 -107
  473. package/contracts/instance/service/PoolService.sol +0 -194
  474. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  475. package/contracts/instance/service/ProductService.sol +0 -543
  476. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  477. package/contracts/shared/ContractDeployerLib.sol +0 -72
  478. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  479. package/contracts/test/TestFee.sol +0 -25
  480. package/contracts/test/TestRegisterable.sol +0 -18
  481. package/contracts/test/TestRoleId.sol +0 -14
  482. package/contracts/test/TestService.sol +0 -24
  483. package/contracts/test/TestToken.sol +0 -26
  484. package/contracts/test/TestVersion.sol +0 -44
  485. package/contracts/test/TestVersionable.sol +0 -17
  486. package/contracts/test/Usdc.sol +0 -26
  487. package/contracts/types/ChainId.sol +0 -38
  488. package/contracts/types/NftIdSet.sol +0 -60
  489. package/contracts/types/NumberId.sol +0 -52
  490. package/contracts/types/RoleId.sol +0 -90
  491. /package/contracts/{types → type}/AddressSet.sol +0 -0
  492. /package/contracts/{types → type}/Key32.sol +0 -0
  493. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -0,0 +1,132 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
6
+ import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
7
+ import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
8
+
9
+ import {RoleId, RoleIdLib, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE} from "../type/RoleId.sol";
10
+
11
+ import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
12
+
13
+ import {TokenRegistry} from "./TokenRegistry.sol";
14
+ import {ReleaseManager} from "./ReleaseManager.sol";
15
+
16
+ /*
17
+ 1) GIF_MANAGER_ROLE
18
+ - can have arbitrary number of members
19
+ - responsible for services registrations
20
+ - responsible for token registration and activation
21
+ 2) GIF_ADMIN_ROLE
22
+ - admin of GIF_MANAGER_ROLE
23
+ - MUST have 1 member at any time
24
+ - granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
25
+ - responsible for creation and activation of releases
26
+
27
+ */
28
+
29
+ contract RegistryAccessManager is AccessManaged, Initializable
30
+ {
31
+ error ErrorRegistryAccessManagerReleaseManagerAuthorityMismatch();
32
+ error ErrorRegistryAccessManagerTokenRegistryZero();
33
+
34
+ uint64 public constant UNIQUE_ROLE_ID_MIN = 1000000;
35
+
36
+ address private _releaseManager;
37
+ address private _tokenRegistry;
38
+
39
+ uint64 private _idNext; // role id
40
+
41
+
42
+ // IMPORTNAT: this.authority() must be valid before initialize() function....
43
+ // -> have constructor and initializer function
44
+ constructor()
45
+ AccessManaged(msg.sender)
46
+ {
47
+ AccessManagerUpgradeableInitializeable accessManager = new AccessManagerUpgradeableInitializeable();
48
+ accessManager.initialize(address(this));
49
+ setAuthority(address(accessManager));
50
+ }
51
+
52
+ function initialize(address admin, address manager, address releaseManager, address tokenRegistry)
53
+ external
54
+ initializer
55
+ {
56
+ // validate input
57
+ if(IAccessManaged(releaseManager).authority() != authority()) {
58
+ revert ErrorRegistryAccessManagerReleaseManagerAuthorityMismatch();
59
+ }
60
+ if(tokenRegistry == address(0)) {
61
+ revert ErrorRegistryAccessManagerTokenRegistryZero();
62
+ }
63
+
64
+ _releaseManager = releaseManager;
65
+ _tokenRegistry = tokenRegistry;
66
+ _idNext = UNIQUE_ROLE_ID_MIN;
67
+
68
+ _setAdminRole();
69
+ _setManagerRole();
70
+
71
+ _grantRole(GIF_ADMIN_ROLE(), admin, 0);
72
+ _grantRole(GIF_MANAGER_ROLE(), manager, 0);
73
+
74
+ _setRoleAdmin(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE());
75
+ }
76
+
77
+ /*function transferAdmin(address to)
78
+ external
79
+ restricted // only with GIF_ADMIN_ROLE or nft owner
80
+ {
81
+ _accessManager.revoke(GIF_ADMIN_ROLE, );
82
+ _accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
83
+ }*/
84
+
85
+ //--- view functions ----------------------------------------------------//
86
+
87
+ //--- private functions -------------------------------------------------//
88
+
89
+ function _setAdminRole() private
90
+ {
91
+ bytes4[] memory functionSelector = new bytes4[](1);
92
+
93
+ // for ReleaseManager
94
+ functionSelector[0] = ReleaseManager.createNextRelease.selector;
95
+ _setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
96
+
97
+ functionSelector[0] = ReleaseManager.activateNextRelease.selector;
98
+ _setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
99
+ }
100
+
101
+ function _setManagerRole() private
102
+ {
103
+ bytes4[] memory functionSelector = new bytes4[](1);
104
+
105
+ // for TokenRegistry
106
+ functionSelector[0] = TokenRegistry.setActive.selector;
107
+ _setTargetFunctionRole(address(_tokenRegistry), functionSelector, GIF_MANAGER_ROLE());
108
+
109
+ // for ReleaseManager
110
+ functionSelector[0] = ReleaseManager.registerService.selector;
111
+ _setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
112
+
113
+ functionSelector[0] = ReleaseManager.prepareNextRelease.selector;
114
+ _setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
115
+ }
116
+
117
+ function _setTargetFunctionRole(address target, bytes4[] memory selectors, RoleId roleId) private {
118
+ AccessManager(authority()).setTargetFunctionRole(target, selectors, roleId.toInt());
119
+ }
120
+
121
+ function _setRoleAdmin(RoleId roleId, RoleId adminRoleId) private {
122
+ AccessManager(authority()).setRoleAdmin(roleId.toInt(), adminRoleId.toInt());
123
+ }
124
+
125
+ function _grantRole(RoleId roleId, address account, uint32 executionDelay) private {
126
+ AccessManager(authority()).grantRole(roleId.toInt(), account, executionDelay);
127
+ }
128
+
129
+ function _getNextRoleId() private returns(RoleId roleId) {
130
+ roleId = RoleIdLib.toRoleId(_idNext++);
131
+ }
132
+ }
@@ -2,27 +2,27 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
5
- import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ // import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
6
6
 
7
7
  import {IRegistry} from "./IRegistry.sol";
8
8
  import {IInstance} from "../instance/IInstance.sol";
9
9
 
10
- import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
11
- import {IBaseComponent} from "../../contracts/components/IBaseComponent.sol";
12
- import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
13
- import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
14
- import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
10
+ import {IComponent} from "../../contracts/shared/IComponent.sol";
11
+ import {IPoolComponent} from "../../contracts/pool/IPoolComponent.sol";
12
+ import {IProductComponent} from "../../contracts/product/IProductComponent.sol";
13
+ import {IDistributionComponent} from "../../contracts/distribution/IDistributionComponent.sol";
15
14
 
16
15
  import {IVersionable} from "../../contracts/shared/IVersionable.sol";
17
16
  import {Versionable} from "../../contracts/shared/Versionable.sol";
18
17
  import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
18
+ import {Registerable} from "../../contracts/shared/Registerable.sol";
19
19
 
20
- import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
21
- import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, POLICY, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
22
- import {StateId, ACTIVE, PAUSED} from "../../contracts/types/StateId.sol";
23
- import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
24
- import {Fee, FeeLib} from "../../contracts/types/Fee.sol";
25
- import {Version, VersionPart, VersionLib} from "../../contracts/types/Version.sol";
20
+ import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/type/RoleId.sol";
21
+ import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, PRICE} from "../../contracts/type/ObjectType.sol";
22
+ import {StateId, ACTIVE, PAUSED} from "../../contracts/type/StateId.sol";
23
+ import {NftId, NftIdLib, zeroNftId} from "../../contracts/type/NftId.sol";
24
+ import {Fee, FeeLib} from "../../contracts/type/Fee.sol";
25
+ import {Version, VersionPart, VersionLib} from "../../contracts/type/Version.sol";
26
26
 
27
27
  import {Service} from "../shared/Service.sol";
28
28
  import {IService} from "../shared/IService.sol";
@@ -30,144 +30,109 @@ import {IRegistryService} from "./IRegistryService.sol";
30
30
  import {Registry} from "./Registry.sol";
31
31
 
32
32
  contract RegistryService is
33
- AccessManagedUpgradeable,
34
33
  Service,
35
34
  IRegistryService
36
35
  {
37
36
  using NftIdLib for NftId;
38
37
 
39
-
40
- // Initial value for constant variable has to be compile-time constant
41
- // TODO define types as constants?
42
- //ObjectType public constant SERVICE_TYPE = REGISTRY();
43
- string public constant NAME = "RegistryService";
44
-
45
38
  // TODO update to real hash when registry is stable
46
39
  bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
47
40
 
48
- address public constant NFT_LOCK_ADDRESS = address(0x1);
49
-
50
- /// @dev
51
- // msg.sender - ONLY registry owner
52
- // CAN NOT register itself
53
- // CAN register ONLY valid object-parent types combinations for SERVICE
54
- // CAN register ONLY IRegisterable address he owns
55
- // IMPORTANT: MUST NOT check owner before calling external contract
56
- function registerService(IService service)
57
- external
58
- restricted
59
- returns(
60
- IRegistry.ObjectInfo memory info,
61
- bytes memory data
62
- )
63
- {
41
+ // From IService
42
+ function getDomain() public pure override returns(ObjectType serviceDomain) {
43
+ return REGISTRY();
44
+ }
64
45
 
65
- // CAN revert if no ERC165 support -> will revert with empty message
66
- if(!service.supportsInterface(type(IService).interfaceId)) {
67
- revert NotService();
68
- }
46
+ // from Versionable
69
47
 
70
- (
71
- info,
72
- data
73
- ) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
48
+ /// @dev top level initializer
49
+ function _initialize(
50
+ address owner,
51
+ bytes memory data
52
+ )
53
+ internal
54
+ virtual override
55
+ initializer()
56
+ {
57
+ address initialOwner;
58
+ address registryAddress;
59
+ address authority;
60
+ (registryAddress, initialOwner, authority) = abi.decode(data, (address, address, address));
74
61
 
75
- info.nftId = _registry.register(info);
76
- service.linkToRegisteredNftId();
77
- return (info, data);
62
+ initializeService(registryAddress, authority, owner);
63
+ registerInterface(type(IRegistryService).interfaceId);
78
64
  }
79
65
 
80
- function registerInstance(IRegisterable instance)
66
+ function registerInstance(IRegisterable instance, address owner)
81
67
  external
68
+ restricted
82
69
  returns(
83
- IRegistry.ObjectInfo memory info,
84
- bytes memory data
70
+ IRegistry.ObjectInfo memory info
85
71
  )
86
72
  {
87
73
  if(!instance.supportsInterface(type(IInstance).interfaceId)) {
88
- revert NotInstance();
74
+ revert ErrorRegistryServiceNotInstance(address(instance));
89
75
  }
90
76
 
91
- (
92
- info,
93
- data
94
- ) = _getAndVerifyContractInfo(instance, INSTANCE(), msg.sender);
77
+ info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
78
+ info.nftId = getRegistry().register(info);
95
79
 
96
- info.nftId = _registry.register(info);
97
80
  instance.linkToRegisteredNftId(); // asume safe
98
-
99
- return (info, data);
100
81
  }
101
82
 
102
- function registerProduct(IBaseComponent product, address owner)
83
+ function registerProduct(IComponent product, address owner)
103
84
  external
104
85
  restricted
105
86
  returns(
106
- IRegistry.ObjectInfo memory info,
107
- bytes memory data
87
+ IRegistry.ObjectInfo memory info
108
88
  )
109
89
  {
110
90
  // CAN revert if no ERC165 support -> will revert with empty message
111
91
  if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
112
- revert NotProduct();
92
+ revert ErrorRegistryServiceNotProduct(address(product));
113
93
  }
114
94
 
115
- (
116
- info,
117
- data
118
- ) = _getAndVerifyContractInfo(product, PRODUCT(), owner);
119
-
120
- info.nftId = _registry.register(info);
121
- // TODO unsafe, let component or its owner derive nftId latter, when state assumptions and modifications of GIF contracts are finished
122
- product.linkToRegisteredNftId();
123
-
124
- return (info, data);
95
+ info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
96
+ info.nftId = getRegistry().register(info);
125
97
  }
126
98
 
127
- function registerPool(IBaseComponent pool, address owner)
99
+ function registerPool(IComponent pool, address owner)
128
100
  external
129
101
  restricted
130
102
  returns(
131
- IRegistry.ObjectInfo memory info,
132
- bytes memory data
103
+ IRegistry.ObjectInfo memory info
133
104
  )
134
105
  {
135
106
  if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
136
- revert NotPool();
107
+ revert ErrorRegistryServiceNotPool(address(pool));
137
108
  }
138
109
 
139
- (
140
- info,
141
- data
142
- ) = _getAndVerifyContractInfo(pool, POOL(), owner);
143
-
144
- info.nftId = _registry.register(info);
145
- pool.linkToRegisteredNftId();
146
-
147
- return (info, data);
110
+ info = _getAndVerifyContractInfo(pool, POOL(), owner);
111
+ info.nftId = getRegistry().register(info);
148
112
  }
149
113
 
150
- function registerDistribution(IBaseComponent distribution, address owner)
114
+ function registerDistribution(IComponent distribution, address owner)
151
115
  external
152
116
  restricted
153
117
  returns(
154
- IRegistry.ObjectInfo memory info,
155
- bytes memory data
118
+ IRegistry.ObjectInfo memory info
156
119
  )
157
120
  {
158
121
  if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
159
- revert NotDistribution();
122
+ revert ErrorRegistryServiceNotDistribution(address(distribution));
160
123
  }
161
124
 
162
- (
163
- info,
164
- data
165
- ) = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
166
-
167
- info.nftId = _registry.register(info);
168
- distribution.linkToRegisteredNftId();
125
+ info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
126
+ info.nftId = getRegistry().register(info);
127
+ }
169
128
 
170
- return (info, data);
129
+ function registerDistributor(IRegistry.ObjectInfo memory info)
130
+ external
131
+ restricted
132
+ returns(NftId nftId)
133
+ {
134
+ _verifyObjectInfo(info, DISTRIBUTOR());
135
+ nftId = getRegistry().register(info);
171
136
  }
172
137
 
173
138
  function registerPolicy(IRegistry.ObjectInfo memory info)
@@ -176,8 +141,7 @@ contract RegistryService is
176
141
  returns(NftId nftId)
177
142
  {
178
143
  _verifyObjectInfo(info, POLICY());
179
-
180
- nftId = _registry.register(info);
144
+ nftId = getRegistry().register(info);
181
145
  }
182
146
 
183
147
  function registerBundle(IRegistry.ObjectInfo memory info)
@@ -186,8 +150,7 @@ contract RegistryService is
186
150
  returns(NftId nftId)
187
151
  {
188
152
  _verifyObjectInfo(info, BUNDLE());
189
-
190
- nftId = _registry.register(info);
153
+ nftId = getRegistry().register(info);
191
154
  }
192
155
 
193
156
  function registerStake(IRegistry.ObjectInfo memory info)
@@ -196,119 +159,49 @@ contract RegistryService is
196
159
  returns(NftId nftId)
197
160
  {
198
161
  _verifyObjectInfo(info, STAKE());
199
-
200
- nftId = _registry.register(info);
162
+ nftId = getRegistry().register(info);
201
163
  }
202
164
 
203
- // From IService
204
- function getName() public pure override(IService, Service) returns(string memory) {
205
- return NAME;
206
- }
207
- //function getType() public pure override(IService, ServiceBase) returns(ObjectType serviceType) {
208
- // return SERVICE_TYPE;
209
- //}
210
-
211
-
212
- // from Versionable
213
-
214
- /// @dev top level initializer
215
- // 1) registry is non upgradeable -> don't need a proxy and uses constructor !
216
- // 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
217
- // 3) deploy registry -> pass registry service address as constructor argument
218
- // registry is getting instantiated and locked to registry service address forever
219
- function _initialize(
220
- address owner,
221
- bytes memory data
222
- )
223
- internal
224
- initializer
225
- virtual override
226
- {
227
- (
228
- address initialAuthority,
229
- bytes memory registryByteCodeWithInitCode
230
- ) = abi.decode(data, (address, bytes));
231
-
232
- __AccessManaged_init(initialAuthority);
233
-
234
- bytes memory encodedConstructorArguments = abi.encode(
235
- owner,
236
- getMajorVersion());
237
-
238
- bytes memory registryCreationCode = ContractDeployerLib.getCreationCode(
239
- registryByteCodeWithInitCode,
240
- encodedConstructorArguments);
241
-
242
- IRegistry registry = IRegistry(ContractDeployerLib.deploy(
243
- registryCreationCode,
244
- REGISTRY_CREATION_CODE_HASH));
245
-
246
- NftId registryNftId = registry.getNftId(address(registry));
247
-
248
- _initializeService(address(registry), owner);
249
-
250
- // TODO why do registry service proxy need to keep its nftId??? -> no registryServiceNftId checks in implementation
251
- // if they are -> use registry address to obtain owner of registry service nft (works the same with any registerable and(or) implementation)
252
- linkToRegisteredNftId();
253
- _registerInterface(type(IRegistryService).interfaceId);
254
- }
165
+ // Internal
255
166
 
256
167
  function _getAndVerifyContractInfo(
257
168
  IRegisterable registerable,
258
169
  ObjectType expectedType, // assume can be valid only
259
- address expectedOwner // assume can be 0
170
+ address expectedOwner // assume can be 0 when given by other service
260
171
  )
261
172
  internal
262
173
  view
263
174
  returns(
264
- IRegistry.ObjectInfo memory info,
265
- bytes memory data
175
+ IRegistry.ObjectInfo memory info
266
176
  )
267
177
  {
268
- (
269
- info,
270
- data
271
- ) = registerable.getInitialInfo();
272
- info.objectAddress = address(registerable);
178
+ info = registerable.getInitialInfo();
179
+
180
+ if(info.objectAddress != address(registerable)) {
181
+ revert ErrorRegistryServiceRegisterableAddressInvalid(registerable, info.objectAddress);
182
+ }
273
183
 
274
184
  if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
275
- revert UnexpectedRegisterableType(expectedType, info.objectType);
185
+ revert ErrorRegistryServiceRegisterableTypeInvalid(registerable, expectedType, info.objectType);
276
186
  }
277
187
 
278
188
  address owner = info.initialOwner;
279
189
 
280
- // solhint-disable-next-line
281
- if(expectedType == INSTANCE()) {
282
- // any address may create a new instance via instance service
283
- } else {
284
- if(owner != expectedOwner) { // registerable owner protection
285
- revert NotRegisterableOwner(expectedOwner);
286
- }
190
+ if(owner != expectedOwner) { // registerable owner protection
191
+ revert ErrorRegistryServiceRegisterableOwnerInvalid(registerable, expectedOwner, owner);
287
192
  }
288
193
 
289
194
  if(owner == address(registerable)) {
290
- revert SelfRegistration();
195
+ revert ErrorRegistryServiceRegisterableSelfRegistration(registerable);
291
196
  }
292
197
 
293
198
  if(owner == address(0)) {
294
- revert RegisterableOwnerIsZero();
199
+ revert ErrorRegistryServiceRegisterableOwnerZero(registerable);
295
200
  }
296
201
 
297
202
  if(getRegistry().isRegistered(owner)) {
298
- revert RegisterableOwnerIsRegistered();
203
+ revert ErrorRegistryServiceRegisterableOwnerRegistered(registerable, owner);
299
204
  }
300
-
301
- /*NftId parentNftId = info.parentNftId;
302
- IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
303
-
304
- if(parentInfo.objectType != parentType) { // parent registration + type
305
- revert InvalidParent(parentNftId);
306
- }*/
307
-
308
- return(
309
- info,
310
- data
311
- );
312
205
  }
313
206
 
314
207
  function _verifyObjectInfo(
@@ -322,37 +215,17 @@ contract RegistryService is
322
215
  info.objectAddress = address(0);
323
216
 
324
217
  if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
325
- revert UnexpectedRegisterableType(expectedType, info.objectType);
218
+ revert ErrorRegistryServiceObjectTypeInvalid(expectedType, info.objectType);
326
219
  }
327
220
 
328
221
  address owner = info.initialOwner;
329
222
 
330
223
  if(owner == address(0)) {
331
- revert RegisterableOwnerIsZero();
224
+ revert ErrorRegistryServiceObjectOwnerZero(info.objectType);
332
225
  }
333
226
 
334
227
  if(getRegistry().isRegistered(owner)) {
335
- revert RegisterableOwnerIsRegistered();
336
- }
337
-
338
- // can catch all 3 if check that initialOwner is not registered
339
- /*if(info.initialOwner == msg.sender) {
340
- revert InitialOwnerIsParent();
341
- }
342
-
343
- if(info.initialOwner == address(this)) {
344
- revert InitialOwnerIsService();
228
+ revert ErrorRegistryServiceObjectOwnerRegistered(info.objectType, owner);
345
229
  }
346
-
347
- if(info.initialOwner == address(getRegistry())) {
348
- revert InitialOwnerIsRegistry();
349
- }*/
350
-
351
- /*NftId parentNftId = info.parentNftId;
352
- IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
353
-
354
- if(parentInfo.objectType != parentType) { // parent registration + type
355
- revert InvalidParent(parentNftId);
356
- }*/
357
230
  }
358
231
  }
@@ -2,8 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
-
6
- import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
5
+ import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
7
6
 
8
7
  import {Registry} from "./Registry.sol";
9
8
  import {IVersionable} from "../shared/IVersionable.sol";
@@ -15,53 +14,54 @@ import {TokenRegistry} from "./TokenRegistry.sol";
15
14
  contract RegistryServiceManager is
16
15
  ProxyManager
17
16
  {
17
+ error ErrorRegistryAccessManagerAuthorityZero();
18
+ error ErrorRegistryAccessManagerRegistryZero();
19
+
18
20
  bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
19
21
 
20
- AccessManager private _accessManager;
21
- RegistryService private _registryService;
22
- TokenRegistry private _tokenRegistry;
22
+ RegistryService private immutable _registryService;
23
23
 
24
24
  /// @dev initializes proxy manager with registry service implementation and deploys registry
25
25
  constructor(
26
- address accessManager
27
- )
28
- ProxyManager()
26
+ address authority, // used by implementation
27
+ address registry, // used by implementation
28
+ bytes32 salt
29
+ )
30
+ ProxyManager(registry)
29
31
  {
30
- _accessManager = AccessManager(accessManager);
31
-
32
- bytes memory initializationData = abi.encode(accessManager, type(Registry).creationCode);
33
-
34
- IVersionable versionable = deploy(
35
- address(new RegistryService()),
36
- initializationData);
32
+ if(authority == address(0)) {
33
+ revert ErrorRegistryAccessManagerAuthorityZero();
34
+ }
35
+
36
+ if(registry == address(0)) {
37
+ revert ErrorRegistryAccessManagerRegistryZero();
38
+ }
39
+
40
+ // implementation's initializer func `data` argument
41
+ RegistryService srv = new RegistryService{ salt: salt }();
42
+ bytes memory data = abi.encode(registry, address(this), authority);
43
+ IVersionable versionable = deployDetermenistic(
44
+ address(srv),
45
+ data,
46
+ salt);
37
47
 
38
48
  _registryService = RegistryService(address(versionable));
39
49
 
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;
50
+ // _linkToNftOwnable(address(_registryService));
53
51
  }
54
52
 
55
- //--- view functions ----------------------------------------------------//
53
+ // // from IRegisterable
56
54
 
57
- function getAccessManager()
58
- external
59
- view
60
- returns (AccessManager)
55
+ // // IMPORTANT: registry here and in constructor MUST be the same
56
+ function linkOwnershipToServiceNft()
57
+ public
58
+ onlyOwner
61
59
  {
62
- return _accessManager;
60
+ _linkToNftOwnable(address(_registryService));
63
61
  }
64
62
 
63
+ //--- view functions ----------------------------------------------------//
64
+
65
65
  function getRegistryService()
66
66
  external
67
67
  view
@@ -69,12 +69,4 @@ contract RegistryServiceManager is
69
69
  {
70
70
  return _registryService;
71
71
  }
72
-
73
- function getTokenRegistry()
74
- external
75
- view
76
- returns (TokenRegistry)
77
- {
78
- return _tokenRegistry;
79
- }
80
72
  }