@etherisc/gif-next 0.0.2-fd4931b-974 → 0.0.2-fd4ee14-428

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 (393) hide show
  1. package/README.md +2 -1
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +19 -13
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +115 -80
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +81 -54
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -5
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +20 -1
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +32 -101
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +83 -71
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +121 -12
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +105 -85
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +1 -1
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +126 -30
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +195 -64
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +206 -49
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +74 -31
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +248 -118
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -71
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  47. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  48. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  49. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +10 -0
  50. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  51. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  52. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  53. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  54. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  56. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  58. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  60. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  61. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +91 -48
  62. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  63. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +69 -38
  64. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  65. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +20 -1
  66. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  67. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -5
  68. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  69. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +35 -1
  70. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  71. package/artifacts/contracts/pool/Pool.sol/Pool.json +18 -12
  72. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  73. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +84 -42
  74. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  75. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +58 -35
  76. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  77. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +79 -36
  78. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  79. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +63 -32
  80. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  81. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +119 -68
  82. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +83 -48
  84. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  85. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
  86. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  87. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +20 -1
  88. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +20 -1
  90. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  91. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +20 -1
  92. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  93. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +11 -5
  94. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  95. package/artifacts/contracts/product/IProductService.sol/IProductService.json +20 -1
  96. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  97. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +97 -46
  98. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +72 -37
  100. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  101. package/artifacts/contracts/product/PricingService.sol/PricingService.json +105 -62
  102. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +76 -45
  104. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  105. package/artifacts/contracts/product/Product.sol/Product.json +18 -12
  106. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  107. package/artifacts/contracts/product/ProductService.sol/ProductService.json +61 -26
  108. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +54 -27
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +82 -45
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -1
  116. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
  118. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  119. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  120. package/artifacts/contracts/registry/Registry.sol/Registry.json +254 -97
  121. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  122. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  123. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  124. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -15
  125. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +46 -30
  127. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  128. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +288 -182
  129. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  130. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
  131. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  132. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
  133. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  134. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +46 -177
  135. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  136. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  137. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  138. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  139. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  140. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  141. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  147. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  148. package/artifacts/contracts/shared/Component.sol/Component.json +18 -12
  149. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +120 -70
  151. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +80 -49
  153. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  154. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +20 -1
  155. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  157. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  158. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  159. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  160. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  161. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  162. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  163. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  164. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -5
  165. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  166. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +27 -1
  167. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  168. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -5
  169. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +0 -10
  171. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  172. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  173. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  174. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  176. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  177. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  180. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  182. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  183. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  184. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +18 -12
  185. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  186. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +10 -20
  187. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  188. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +6 -6
  189. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
  190. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +27 -35
  191. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  192. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
  193. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  194. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  195. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +35 -16
  197. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +15 -9
  199. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  200. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  201. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
  203. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  204. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  205. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  206. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  207. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  208. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  209. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +247 -579
  210. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  211. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +471 -62
  212. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  214. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  215. package/artifacts/contracts/staking/Staking.sol/Staking.json +303 -798
  216. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -164
  218. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  219. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -39
  220. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  221. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +503 -120
  222. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +67 -43
  224. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  226. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  227. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +281 -18
  228. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  229. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  230. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  231. package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
  232. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +40 -2
  234. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  236. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  238. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  240. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  241. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  242. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
  244. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  245. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  246. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +96 -2
  248. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  250. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  252. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  254. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  256. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +114 -4
  258. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +52 -2
  260. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  262. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  264. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  266. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  268. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  270. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  274. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  276. package/contracts/distribution/Distribution.sol +2 -4
  277. package/contracts/distribution/DistributionService.sol +5 -6
  278. package/contracts/distribution/DistributionServiceManager.sol +0 -12
  279. package/contracts/distribution/IDistributionComponent.sol +1 -1
  280. package/contracts/distribution/IDistributionService.sol +1 -1
  281. package/contracts/instance/IInstance.sol +21 -11
  282. package/contracts/instance/IInstanceService.sol +26 -12
  283. package/contracts/instance/Instance.sol +84 -49
  284. package/contracts/instance/InstanceAdmin.sol +331 -0
  285. package/contracts/instance/InstanceAuthorizationsLib.sol +192 -151
  286. package/contracts/instance/InstanceReader.sol +32 -6
  287. package/contracts/instance/InstanceService.sol +119 -47
  288. package/contracts/instance/InstanceStore.sol +29 -20
  289. package/contracts/instance/base/BalanceStore.sol +11 -6
  290. package/contracts/instance/base/Cloneable.sol +2 -25
  291. package/contracts/instance/base/ObjectCounter.sol +21 -0
  292. package/contracts/instance/base/ObjectManager.sol +1 -3
  293. package/contracts/instance/module/IAccess.sol +2 -10
  294. package/contracts/oracle/IOracle.sol +20 -0
  295. package/contracts/oracle/IOracleComponent.sol +32 -0
  296. package/contracts/oracle/IOracleService.sol +65 -0
  297. package/contracts/oracle/Oracle.sol +145 -0
  298. package/contracts/oracle/OracleService.sol +278 -0
  299. package/contracts/oracle/OracleServiceManager.sol +42 -0
  300. package/contracts/pool/BundleService.sol +20 -20
  301. package/contracts/pool/IBundleService.sol +1 -1
  302. package/contracts/pool/IPoolService.sol +4 -1
  303. package/contracts/pool/PoolService.sol +38 -10
  304. package/contracts/product/ApplicationService.sol +6 -6
  305. package/contracts/product/ClaimService.sol +12 -7
  306. package/contracts/product/IApplicationService.sol +1 -1
  307. package/contracts/product/IClaimService.sol +7 -1
  308. package/contracts/product/IPolicyService.sol +1 -1
  309. package/contracts/product/IPricingService.sol +1 -1
  310. package/contracts/product/IProductService.sol +1 -1
  311. package/contracts/product/PolicyService.sol +9 -7
  312. package/contracts/product/PricingService.sol +8 -9
  313. package/contracts/product/Product.sol +1 -1
  314. package/contracts/product/ProductService.sol +6 -6
  315. package/contracts/registry/ChainNft.sol +1 -0
  316. package/contracts/registry/IRegistry.sol +20 -14
  317. package/contracts/registry/IRegistryService.sol +1 -0
  318. package/contracts/registry/IServiceAuthorization.sol +35 -0
  319. package/contracts/registry/Registry.sol +85 -66
  320. package/contracts/registry/RegistryAdmin.sol +333 -0
  321. package/contracts/registry/RegistryService.sol +8 -70
  322. package/contracts/registry/RegistryServiceManager.sol +1 -20
  323. package/contracts/registry/ReleaseManager.sol +218 -221
  324. package/contracts/registry/ServiceAuthorization.sol +86 -0
  325. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  326. package/contracts/registry/TokenRegistry.sol +56 -60
  327. package/contracts/shared/AccessAdmin.sol +759 -0
  328. package/contracts/shared/AccessManagerCustom.sol +741 -0
  329. package/contracts/shared/AccessManagerExtended.sol +481 -0
  330. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  331. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  332. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  333. package/contracts/shared/Component.sol +8 -13
  334. package/contracts/shared/ComponentService.sol +39 -17
  335. package/contracts/shared/ComponentVerifyingService.sol +13 -7
  336. package/contracts/shared/ERC165.sol +1 -1
  337. package/contracts/shared/IAccessAdmin.sol +168 -0
  338. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  339. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  340. package/contracts/shared/IComponent.sol +3 -7
  341. package/contracts/shared/IComponentService.sol +11 -0
  342. package/contracts/shared/IKeyValueStore.sol +1 -1
  343. package/contracts/shared/INftOwnable.sol +1 -1
  344. package/contracts/shared/IService.sol +8 -1
  345. package/contracts/shared/InitializableCustom.sol +177 -0
  346. package/contracts/shared/InstanceLinkedComponent.sol +1 -2
  347. package/contracts/shared/KeyValueStore.sol +1 -4
  348. package/contracts/shared/Lifecycle.sol +11 -2
  349. package/contracts/shared/NftIdSetManager.sol +2 -6
  350. package/contracts/shared/NftOwnable.sol +2 -13
  351. package/contracts/shared/PolicyHolder.sol +2 -1
  352. package/contracts/shared/ProxyManager.sol +6 -2
  353. package/contracts/shared/Service.sol +28 -22
  354. package/contracts/staking/IStaking.sol +93 -38
  355. package/contracts/staking/IStakingService.sol +71 -40
  356. package/contracts/staking/StakeManagerLib.sol +231 -0
  357. package/contracts/staking/Staking.sol +302 -137
  358. package/contracts/staking/StakingManager.sol +22 -20
  359. package/contracts/staking/StakingReader.sol +119 -24
  360. package/contracts/staking/StakingService.sol +193 -76
  361. package/contracts/staking/StakingServiceManager.sol +2 -2
  362. package/contracts/staking/StakingStore.sol +613 -0
  363. package/contracts/staking/TargetManagerLib.sol +76 -10
  364. package/contracts/type/AddressSet.sol +1 -1
  365. package/contracts/type/Amount.sol +15 -1
  366. package/contracts/type/Blocknumber.sol +14 -2
  367. package/contracts/type/Fee.sol +1 -1
  368. package/contracts/type/NftId.sol +9 -9
  369. package/contracts/type/NftIdSet.sol +1 -1
  370. package/contracts/type/ObjectType.sol +139 -67
  371. package/contracts/type/Referral.sol +1 -1
  372. package/contracts/type/RequestId.sol +75 -0
  373. package/contracts/type/RiskId.sol +1 -1
  374. package/contracts/type/RoleId.sol +79 -21
  375. package/contracts/type/Seconds.sol +18 -0
  376. package/contracts/type/Selector.sol +102 -0
  377. package/contracts/type/StateId.sol +12 -0
  378. package/contracts/type/String.sol +53 -0
  379. package/contracts/type/Timestamp.sol +6 -2
  380. package/contracts/type/Version.sol +1 -1
  381. package/package.json +3 -3
  382. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  383. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  384. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  385. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -298
  386. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  387. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  388. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  389. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  390. package/contracts/instance/InstanceAccessManager.sol +0 -543
  391. package/contracts/registry/RegistryAccessManager.sol +0 -167
  392. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  393. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -2,6 +2,9 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+
7
+ import {InitializableCustom} from "../shared/InitializableCustom.sol";
5
8
 
6
9
  import {NftId, NftIdLib} from "../type/NftId.sol";
7
10
  import {VersionPart} from "../type/Version.sol";
@@ -9,8 +12,10 @@ import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, STAKING
9
12
 
10
13
  import {ChainNft} from "./ChainNft.sol";
11
14
  import {IRegistry} from "./IRegistry.sol";
15
+ import {IRegisterable} from "../shared/IRegisterable.sol";
12
16
  import {ReleaseManager} from "./ReleaseManager.sol";
13
17
  import {TokenRegistry} from "./TokenRegistry.sol";
18
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
14
19
 
15
20
  // IMPORTANT
16
21
  // Each NFT minted by registry is accosiated with:
@@ -23,9 +28,10 @@ import {TokenRegistry} from "./TokenRegistry.sol";
23
28
  // 4) state object by regular service (POLICY, BUNDLE, STAKE)
24
29
 
25
30
  contract Registry is
31
+ InitializableCustom,
26
32
  IRegistry
27
33
  {
28
- address public constant NFT_LOCK_ADDRESS = address(0x1);
34
+ address public NFT_LOCK_ADDRESS = address(0x1);
29
35
  uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
30
36
  uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
31
37
  string public constant EMPTY_URI = "";
@@ -43,13 +49,23 @@ contract Registry is
43
49
  mapping(ObjectType objectType => mapping(
44
50
  ObjectType parentType => bool)) private _coreObjectCombinations;
45
51
 
46
- NftId immutable _registryNftId;
47
- ChainNft immutable _chainNft;
52
+ RegistryAdmin public immutable _admin;
53
+ ChainNft public immutable _chainNft;
54
+
55
+ NftId public immutable _protocolNftId;
56
+ NftId public immutable _registryNftId;
57
+ NftId public _stakingNftId;
48
58
 
49
- ReleaseManager immutable _releaseManager;
50
- address private _tokenRegistryAddress;
51
- address private _stakingAddress;
59
+ address public _tokenRegistryAddress;
60
+ address public _stakingAddress;
61
+ ReleaseManager public _releaseManager;
52
62
 
63
+ // TODO
64
+ // 1). Registry and ReleaseManager must be treated as whole single entity.
65
+ // But current limitations of EVM does not allow it -> require it to be splitted
66
+ // 2). Keep onlyReleaseManager modifier
67
+ // 3). Delete onlyRegistryService in favor of restricted, introduce aditional "domain role", REGISTRY_SERVICE_ROLE
68
+ // 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
53
69
  modifier onlyRegistryService() {
54
70
  if(!_releaseManager.isActiveRegistryService(msg.sender)) {
55
71
  revert ErrorRegistryCallerNotRegistryService();
@@ -57,6 +73,7 @@ contract Registry is
57
73
  _;
58
74
  }
59
75
 
76
+
60
77
  modifier onlyReleaseManager() {
61
78
  if(msg.sender != address(_releaseManager)) {
62
79
  revert ErrorRegistryCallerNotReleaseManager();
@@ -64,14 +81,16 @@ contract Registry is
64
81
  _;
65
82
  }
66
83
 
67
- constructor() {
68
- _releaseManager = ReleaseManager(msg.sender);
69
84
 
85
+ constructor(RegistryAdmin admin)
86
+ InitializableCustom()
87
+ {
88
+ _admin = admin;
70
89
  // deploy NFT
71
90
  _chainNft = new ChainNft(address(this));
72
91
 
73
92
  // initial registry setup
74
- _registerProtocol();
93
+ _protocolNftId = _registerProtocol();
75
94
  _registryNftId = _registerRegistry();
76
95
 
77
96
  // set object types and object parent relations
@@ -79,53 +98,21 @@ contract Registry is
79
98
  }
80
99
 
81
100
 
82
- function setTokenRegistry(
83
- address tokenRegistry
101
+ /// @dev wires release manager and token to registry (this contract).
102
+ /// MUST be called by release manager.
103
+ function initialize(
104
+ address releaseManager,
105
+ address tokenRegistry,
106
+ address staking
84
107
  )
85
108
  external
86
- onlyReleaseManager
109
+ initializer()
87
110
  {
88
- if (_tokenRegistryAddress != address(0)) {
89
- revert TokenRegistryAlreadySet(tokenRegistry);
90
- }
91
-
92
- if (address(tokenRegistry) == address(0)) {
93
- revert TokenRegistryZero();
94
- }
95
-
111
+ _releaseManager = ReleaseManager(releaseManager);
96
112
  _tokenRegistryAddress = tokenRegistry;
97
- }
98
-
99
-
100
- function registerStaking(
101
- address stakingAddress,
102
- address stakingOwner
103
- )
104
- external
105
- onlyReleaseManager
106
- returns(NftId stakingNftId)
107
- {
108
- // staking contract for same chain may only be registered once
109
- if (_stakingAddress != address(0)) {
110
- revert StakingAlreadyRegistered(_stakingAddress);
111
- }
112
-
113
- _stakingAddress = stakingAddress;
114
- uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
115
- stakingNftId = NftIdLib.toNftId(stakingId);
116
-
117
- _nftIdByAddress[_stakingAddress] = stakingNftId;
118
- _info[stakingNftId] = ObjectInfo({
119
- nftId: stakingNftId,
120
- parentNftId: _registryNftId,
121
- objectType: STAKING(),
122
- isInterceptor: false,
123
- objectAddress: _stakingAddress,
124
- initialOwner: stakingOwner,
125
- data: ""
126
- });
113
+ _stakingAddress = staking;
127
114
 
128
- _chainNft.mint(stakingOwner, stakingId);
115
+ _stakingNftId = _registerStaking();
129
116
  }
130
117
 
131
118
  function registerService(
@@ -225,13 +212,7 @@ contract Registry is
225
212
  return _releaseManager.getInitialVersion();
226
213
  }
227
214
 
228
- // TODO make distinction between active an not yet active version
229
- // need to be thought trough, not yet clear if necessary
230
- // need to answer question: what is the latest version during the upgrade process?
231
- // likely setting up a new gif version does not fit into a single tx
232
- // in this case we might want to have a period where the latest version is
233
- // in the process of being set up while the latest active version is 1 major release smaller
234
- /// @dev latest GIF major version (might not yet be active)
215
+ /// @dev next GIF release version to be released
235
216
  function getNextVersion() external view returns (VersionPart) {
236
217
  return _releaseManager.getNextVersion();
237
218
  }
@@ -253,6 +234,10 @@ contract Registry is
253
234
  return _registryNftId;
254
235
  }
255
236
 
237
+ function getProtocolNftId() external view returns (NftId nftId) {
238
+ return _protocolNftId;
239
+ }
240
+
256
241
  function getNftId(address object) external view returns (NftId id) {
257
242
  return _nftIdByAddress[object];
258
243
  }
@@ -290,12 +275,14 @@ contract Registry is
290
275
  return _info[objectParentNftId].objectType == INSTANCE();
291
276
  }
292
277
 
293
- function isValidRelease(VersionPart version) external view returns (bool)
278
+ function isActiveRelease(VersionPart version) external view returns (bool)
294
279
  {
295
- return _releaseManager.isValidRelease(version);
280
+ return _releaseManager.isActiveRelease(version);
296
281
  }
297
282
 
298
283
  function getStakingAddress() external view returns (address staking) {
284
+ //return getObjectInfo(_stakingNftId).objectAddress;
285
+ //return _info[_stakingNftId].objectAddress;
299
286
  return _stakingAddress;
300
287
  }
301
288
 
@@ -308,7 +295,7 @@ contract Registry is
308
295
  VersionPart releaseVersion
309
296
  ) external view returns (address service)
310
297
  {
311
- service = _service[releaseVersion][serviceDomain];
298
+ service = _service[releaseVersion][serviceDomain];
312
299
  }
313
300
 
314
301
  function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
@@ -323,6 +310,14 @@ contract Registry is
323
310
  return address(_chainNft);
324
311
  }
325
312
 
313
+ function getRegistryAdminAddress() external view returns (address) {
314
+ return address(_admin);
315
+ }
316
+
317
+ function getAuthority() external view returns (address) {
318
+ return _admin.authority();
319
+ }
320
+
326
321
  function getOwner() public view returns (address owner) {
327
322
  return ownerOf(address(this));
328
323
  }
@@ -408,7 +403,7 @@ contract Registry is
408
403
  address parentObjectAddress
409
404
  )
410
405
  internal
411
- view
406
+ pure
412
407
  returns (address interceptor)
413
408
  {
414
409
  // no intercepting calls for stakes
@@ -436,9 +431,10 @@ contract Registry is
436
431
  /// @dev protocol registration used to anchor the dip ecosystem relations
437
432
  function _registerProtocol()
438
433
  private
434
+ returns (NftId protocolNftId)
439
435
  {
440
436
  uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
441
- NftId protocolNftId = NftIdLib.toNftId(protocolId);
437
+ protocolNftId = NftIdLib.toNftId(protocolId);
442
438
 
443
439
  _info[protocolNftId] = ObjectInfo({
444
440
  nftId: protocolNftId,
@@ -470,7 +466,7 @@ contract Registry is
470
466
  }
471
467
  else
472
468
  {// we are global registry
473
- parentNftId = NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID());
469
+ parentNftId = _protocolNftId;
474
470
  }
475
471
 
476
472
  _info[registryNftId] = ObjectInfo({
@@ -482,8 +478,8 @@ contract Registry is
482
478
  initialOwner: NFT_LOCK_ADDRESS,
483
479
  data: ""
484
480
  });
485
- _nftIdByAddress[address(this)] = registryNftId;
486
481
 
482
+ _nftIdByAddress[address(this)] = registryNftId;
487
483
  _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
488
484
  }
489
485
 
@@ -506,13 +502,36 @@ contract Registry is
506
502
 
507
503
  _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
508
504
  }
505
+ // depends on _registryNftId and _stakingAddress
506
+ function _registerStaking()
507
+ private
508
+ returns (NftId stakingNftId)
509
+ {
510
+ address stakingOwner = IRegisterable(_stakingAddress).getOwner();
511
+ uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
512
+ stakingNftId = NftIdLib.toNftId(stakingId);
513
+
514
+ _info[stakingNftId] = ObjectInfo({
515
+ nftId: stakingNftId,
516
+ parentNftId: _registryNftId,
517
+ objectType: STAKING(),
518
+ isInterceptor: false,
519
+ objectAddress: _stakingAddress,
520
+ initialOwner: stakingOwner,
521
+ data: ""
522
+ });
523
+
524
+ _nftIdByAddress[_stakingAddress] = stakingNftId;
525
+ // reverts if nftId was already minted
526
+ _chainNft.mint(stakingOwner, stakingId);
527
+ }
509
528
 
510
529
  /// @dev defines which object - parent types relations are allowed to register
511
530
  // IMPORTANT:
512
531
  // 1) EACH object type MUST have only one parent type across ALL mappings
513
532
  // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
514
533
  // 3) DO NOT use REGISTRY as object type
515
- // 2) DO NOT use PROTOCOL and "zeroObjectType"
534
+ // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
516
535
  function _setupValidCoreTypesAndCombinations()
517
536
  private
518
537
  {
@@ -0,0 +1,333 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessAdmin} from "../shared/AccessAdmin.sol";
5
+ import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
6
+ import {IRegistry} from "./IRegistry.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+ import {IServiceAuthorization} from "./IServiceAuthorization.sol";
9
+ import {IStaking} from "../staking/IStaking.sol";
10
+ import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
11
+ import {ReleaseManager} from "./ReleaseManager.sol";
12
+ import {RoleId, RoleIdLib, ADMIN_ROLE, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
+ import {StakingStore} from "../staking/StakingStore.sol";
14
+ import {STAKING} from "../type/ObjectType.sol";
15
+ import {TokenRegistry} from "./TokenRegistry.sol";
16
+ import {VersionPart} from "../type/Version.sol";
17
+
18
+ /*
19
+ 1) GIF_MANAGER_ROLE
20
+ - can have arbitrary number of members
21
+ - responsible for services registrations
22
+ - responsible for token registration and activation
23
+
24
+ 2) GIF_ADMIN_ROLE
25
+ - admin of GIF_MANAGER_ROLE
26
+ - MUST have 1 member at any time
27
+ - granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
28
+ - responsible for creation and activation of releases
29
+
30
+ createServiceTarget(type, release)
31
+ createServiceRole(type,release)
32
+ getServiceRole(type, release)
33
+ */
34
+ contract RegistryAdmin is
35
+ AccessAdmin
36
+ {
37
+ error ErrorRegistryAdminIsAlreadySetUp();
38
+
39
+ string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
40
+ string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
41
+ string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
42
+ string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
43
+
44
+ string public constant RELEASE_MANAGER_TARGET_NAME = "ReleaseManagerTarget";
45
+ string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistryTarget";
46
+ string public constant STAKING_TARGET_NAME = "StakingTarget";
47
+ string public constant STAKING_STORE_TARGET_NAME = "StakingStoreTarget";
48
+
49
+ mapping(address service => VersionPart majorVersion) private _ServiceRelease;
50
+
51
+ address private _releaseManager;
52
+ address private _tokenRegistry;
53
+ address private _staking;
54
+ address private _stakingStore;
55
+ bool private _setupCompleted;
56
+
57
+ constructor() AccessAdmin() { }
58
+
59
+ function completeSetup(
60
+ IRegistry registry,
61
+ address gifAdmin,
62
+ address gifManager
63
+ )
64
+ external
65
+ onlyDeployer()
66
+ {
67
+ if (_setupCompleted) { revert ErrorRegistryAdminIsAlreadySetUp(); }
68
+ else { _setupCompleted = true; }
69
+
70
+ _releaseManager = registry.getReleaseManagerAddress();
71
+ _tokenRegistry = registry.getTokenRegistryAddress();
72
+ _staking = registry.getStakingAddress();
73
+ _stakingStore = address(
74
+ IStaking(_staking).getStakingStore());
75
+
76
+ // at this moment all registry contracts are deployed and fully intialized
77
+ _createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME);
78
+
79
+ _setupGifAdminRole(gifAdmin);
80
+ _setupGifManagerRole(gifManager);
81
+
82
+ _setupReleaseManager();
83
+ _setupStaking();
84
+ }
85
+
86
+
87
+ /// @dev Sets up authorizaion for specified service.
88
+ /// For all authorized services its authorized functions are enabled.
89
+ /// Permissioned function: Access is restricted to release manager.
90
+ function authorizeService(
91
+ IServiceAuthorization serviceAuthorization,
92
+ IService service
93
+ )
94
+ external
95
+ restricted()
96
+ {
97
+ _createServiceTargetAndRole(service);
98
+ _authorizeServiceFunctions(serviceAuthorization, service);
99
+ }
100
+
101
+
102
+ function grantServiceRoleForAllVersions(IService service, ObjectType domain)
103
+ external
104
+ restricted()
105
+ {
106
+ _grantRoleToAccount(
107
+ RoleIdLib.roleForTypeAndAllVersions(domain),
108
+ address(service));
109
+ }
110
+
111
+
112
+ function _createServiceTargetAndRole(IService service)
113
+ private
114
+ {
115
+ ObjectType domain = service.getDomain();
116
+ string memory baseName = ObjectTypeLib.toName(domain);
117
+ VersionPart version = service.getVersion().toMajorPart();
118
+ uint256 versionInt = version.toInt();
119
+ string memory versionName = "_v0";
120
+ string memory versionNumber = ObjectTypeLib.toString(versionInt);
121
+
122
+ if (versionInt >= 10) {
123
+ versionName = "_v";
124
+ }
125
+
126
+ // create service target
127
+ string memory serviceTargetName = string(
128
+ abi.encodePacked(
129
+ baseName,
130
+ "Service",
131
+ versionName,
132
+ versionNumber));
133
+
134
+ _createTarget(
135
+ address(service),
136
+ serviceTargetName);
137
+
138
+ // create service role
139
+ string memory serviceRoleName = string(
140
+ abi.encodePacked(
141
+ baseName,
142
+ "ServiceRole",
143
+ versionName,
144
+ versionNumber));
145
+
146
+ RoleId roleId = RoleIdLib.roleForTypeAndVersion(
147
+ domain,
148
+ version);
149
+
150
+ _createRole(
151
+ roleId,
152
+ ADMIN_ROLE(),
153
+ serviceRoleName,
154
+ 1, // service roles must only be given to this unique service
155
+ true); // it must not be possible to remove this role once granted
156
+
157
+ _grantRoleToAccount(
158
+ roleId,
159
+ address(service));
160
+ }
161
+
162
+
163
+ function _authorizeServiceFunctions(
164
+ IServiceAuthorization serviceAuthorization,
165
+ IService service
166
+ )
167
+ private
168
+ {
169
+ ObjectType serviceDomain = service.getDomain();
170
+ ObjectType authorizedDomain;
171
+ RoleId authorizedRoleId;
172
+
173
+ VersionPart release = service.getVersion().toMajorPart();
174
+ ObjectType[] memory authorizedDomains = serviceAuthorization.getAuthorizedDomains(serviceDomain);
175
+
176
+ for (uint256 i = 0; i < authorizedDomains.length; i++) {
177
+ authorizedDomain = authorizedDomains[i];
178
+
179
+ // derive authorized role from authorized domain
180
+ if (authorizedDomain == ALL()) {
181
+ authorizedRoleId = PUBLIC_ROLE();
182
+ } else {
183
+ authorizedRoleId = RoleIdLib.roleForTypeAndVersion(
184
+ authorizedDomain,
185
+ release);
186
+ }
187
+
188
+ // get authorized functions for authorized domain
189
+ IAccessAdmin.Function[] memory authorizatedFunctions = serviceAuthorization.getAuthorizedFunctions(
190
+ serviceDomain,
191
+ authorizedDomain);
192
+
193
+ _authorizeTargetFunctions(
194
+ address(service),
195
+ authorizedRoleId,
196
+ authorizatedFunctions);
197
+ }
198
+ }
199
+
200
+ /*function transferAdmin(address to)
201
+ external
202
+ restricted // only with GIF_ADMIN_ROLE or nft owner
203
+ {
204
+ _accessManager.revoke(GIF_ADMIN_ROLE, );
205
+ _accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
206
+ }*/
207
+
208
+ //--- view functions ----------------------------------------------------//
209
+
210
+ function getGifAdminRole() external view returns (RoleId) {
211
+ return GIF_ADMIN_ROLE();
212
+ }
213
+
214
+ function getGifManagerRole() external view returns (RoleId) {
215
+ return GIF_MANAGER_ROLE();
216
+ }
217
+
218
+ //--- private functions -------------------------------------------------//
219
+
220
+ function _setupGifAdminRole(address gifAdmin) private {
221
+ // TODO decide on max member count
222
+ _createRole(GIF_ADMIN_ROLE(), getAdminRole(), GIF_ADMIN_ROLE_NAME, 2, false);
223
+ _grantRoleToAccount(GIF_ADMIN_ROLE(), gifAdmin);
224
+
225
+ // for ReleaseManager
226
+ Function[] memory functions;
227
+ functions = new Function[](2);
228
+ functions[0] = toFunction(ReleaseManager.createNextRelease.selector, "createNextRelease");
229
+ functions[1] = toFunction(ReleaseManager.activateNextRelease.selector, "activateNextRelease");
230
+ _authorizeTargetFunctions(_releaseManager, GIF_ADMIN_ROLE(), functions);
231
+
232
+ // for Staking
233
+ }
234
+
235
+ function _setupGifManagerRole(address gifManager) private {
236
+ _createRole(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE(), GIF_MANAGER_ROLE_NAME, 1, false);
237
+ _grantRoleToAccount(GIF_MANAGER_ROLE(), gifManager);
238
+
239
+ // for TokenRegistry
240
+ Function[] memory functions;
241
+ functions = new Function[](5);
242
+ functions[0] = toFunction(TokenRegistry.registerToken.selector, "registerToken");
243
+ functions[1] = toFunction(TokenRegistry.registerRemoteToken.selector, "registerRemoteToken");
244
+ functions[2] = toFunction(TokenRegistry.setActive.selector, "setActive");
245
+ functions[3] = toFunction(TokenRegistry.setActiveForVersion.selector, "setActiveForVersion");
246
+ // TODO find a better way (only needed for testing)
247
+ functions[4] = toFunction(TokenRegistry.setActiveWithVersionCheck.selector, "setActiveWithVersionCheck");
248
+ _authorizeTargetFunctions(_tokenRegistry, GIF_MANAGER_ROLE(), functions);
249
+
250
+ // for ReleaseManager
251
+ functions = new Function[](2);
252
+ functions[0] = toFunction(ReleaseManager.prepareNextRelease.selector, "prepareNextRelease");
253
+ functions[1] = toFunction(ReleaseManager.registerService.selector, "registerService");
254
+ _authorizeTargetFunctions(_releaseManager, GIF_MANAGER_ROLE(), functions);
255
+
256
+ // for Staking
257
+ }
258
+
259
+
260
+ function _setupReleaseManager() private {
261
+ _createTarget(_releaseManager, RELEASE_MANAGER_TARGET_NAME);
262
+
263
+ RoleId releaseManagerRoleId = RoleIdLib.roleForType(RELEASE());
264
+ _createRole(releaseManagerRoleId, ADMIN_ROLE(), RELEASE_MANAGER_TARGET_NAME, 1, true);
265
+ _grantRoleToAccount(releaseManagerRoleId, _releaseManager);
266
+
267
+ Function[] memory functions;
268
+ functions = new Function[](2);
269
+ functions[0] = toFunction(RegistryAdmin.authorizeService.selector, "authorizeService");
270
+ functions[1] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
271
+ _authorizeTargetFunctions(address(this), releaseManagerRoleId, functions);
272
+ }
273
+
274
+
275
+ function _setupStaking() private {
276
+ _createTarget(_staking, STAKING_TARGET_NAME);
277
+ _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME);
278
+
279
+
280
+ // staking function authorization for staking service
281
+ RoleId stakingServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(STAKING());
282
+ _createRole(stakingServiceRoleId, ADMIN_ROLE(), STAKING_SERVICE_ROLE_NAME, 1, true);
283
+
284
+ Function[] memory functions;
285
+ functions = new Function[](13);
286
+ functions[0] = toFunction(IStaking.registerTarget.selector, "registerTarget");
287
+ functions[1] = toFunction(IStaking.setLockingPeriod.selector, "setLockingPeriod");
288
+ functions[2] = toFunction(IStaking.setRewardRate.selector, "setRewardRate");
289
+ functions[3] = toFunction(IStaking.refillRewardReserves.selector, "refillRewardReserves");
290
+ functions[4] = toFunction(IStaking.withdrawRewardReserves.selector, "withdrawRewardReserves");
291
+ functions[5] = toFunction(IStaking.createStake.selector, "createStake");
292
+ functions[6] = toFunction(IStaking.stake.selector, "stake");
293
+ functions[7] = toFunction(IStaking.unstake.selector, "unstake");
294
+ functions[8] = toFunction(IStaking.restake.selector, "restake");
295
+ functions[9] = toFunction(IStaking.updateRewards.selector, "updateRewards");
296
+ functions[10] = toFunction(IStaking.claimRewards.selector, "claimRewards");
297
+ functions[11] = toFunction(IStaking.collectDipAmount.selector, "collectDipAmount");
298
+ functions[12] = toFunction(IStaking.transferDipAmount.selector, "transferDipAmount");
299
+ _authorizeTargetFunctions(_staking, stakingServiceRoleId, functions);
300
+
301
+ // staking function authorization for pool service
302
+ RoleId poolServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(POOL());
303
+ _createRole(poolServiceRoleId, ADMIN_ROLE(), POOL_SERVICE_ROLE_NAME, 1, true);
304
+
305
+ // staking function authorizations
306
+ functions = new Function[](2);
307
+ functions[0] = toFunction(IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
308
+ functions[1] = toFunction(IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
309
+ _authorizeTargetFunctions(_staking, poolServiceRoleId, functions);
310
+
311
+ // staking store function authorizations
312
+ RoleId stakingRoleId = RoleIdLib.roleForType(STAKING());
313
+ _createRole(stakingRoleId, ADMIN_ROLE(), STAKING_TARGET_NAME, 1, true);
314
+ _grantRoleToAccount(stakingRoleId, _staking);
315
+
316
+ functions = new Function[](14);
317
+ functions[0] = toFunction(StakingStore.setStakingRate.selector, "setStakingRate");
318
+ functions[1] = toFunction(StakingStore.createTarget.selector, "createTarget");
319
+ functions[2] = toFunction(StakingStore.updateTarget.selector, "updateTarget");
320
+ functions[3] = toFunction(StakingStore.increaseReserves.selector, "increaseReserves");
321
+ functions[4] = toFunction(StakingStore.decreaseReserves.selector, "decreaseReserves");
322
+ functions[5] = toFunction(StakingStore.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
323
+ functions[6] = toFunction(StakingStore.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
324
+ functions[7] = toFunction(StakingStore.create.selector, "create");
325
+ functions[8] = toFunction(StakingStore.update.selector, "update");
326
+ functions[9] = toFunction(StakingStore.increaseStake.selector, "increaseStake");
327
+ functions[10] = toFunction(StakingStore.restakeRewards.selector, "restakeRewards");
328
+ functions[11] = toFunction(StakingStore.updateRewards.selector, "updateRewards");
329
+ functions[12] = toFunction(StakingStore.claimUpTo.selector, "claimUpTo");
330
+ functions[13] = toFunction(StakingStore.unstakeUpTo.selector, "unstakeUpTo");
331
+ _authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
332
+ }
333
+ }