@etherisc/gif-next 0.0.2-8bdd2eb-413 → 0.0.2-8d9d4d6-542

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 (324) hide show
  1. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1502 -0
  3. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  4. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  5. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  6. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1168 -0
  7. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  8. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +110 -0
  9. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  10. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
  11. package/artifacts/contracts/authorization/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  12. package/artifacts/contracts/authorization/InstanceAdmin.sol/InstanceAdmin.json +1639 -0
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +134 -0
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
  17. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +108 -79
  20. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +48 -40
  22. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +13 -0
  25. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  26. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +32 -101
  27. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  28. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +58 -65
  29. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  30. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +120 -1
  31. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  32. package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -79
  33. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +22 -22
  35. package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.dbg.json +4 -0
  36. package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.json +1676 -0
  37. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  38. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +289 -0
  39. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +1 -1
  40. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +70 -46
  41. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  42. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +192 -56
  43. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  44. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +201 -34
  45. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  46. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +41 -17
  47. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  48. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +248 -108
  49. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  50. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  51. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  52. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  53. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  54. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  55. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  56. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -71
  57. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  58. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  60. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  61. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  62. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  63. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  64. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  65. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +10 -0
  66. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  67. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  68. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  69. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  70. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  71. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  72. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  73. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  74. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  76. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  77. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +78 -49
  78. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  79. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -25
  80. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  81. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +13 -0
  82. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  83. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  84. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +13 -0
  85. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  86. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  87. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +62 -41
  88. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +25 -21
  90. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  91. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -37
  92. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  93. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +27 -19
  94. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  95. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +106 -69
  96. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +47 -35
  98. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  99. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +13 -0
  100. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  101. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +13 -0
  102. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  103. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
  104. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  105. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +13 -0
  106. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  107. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  108. package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -0
  109. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  110. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +84 -47
  111. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  112. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +36 -24
  113. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  114. package/artifacts/contracts/product/PricingService.sol/PricingService.json +92 -63
  115. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +40 -32
  117. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  118. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ProductService.sol/ProductService.json +54 -25
  120. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +21 -13
  122. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  123. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  124. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  125. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -0
  126. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  127. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  128. package/artifacts/contracts/registry/Registry.sol/Registry.json +19 -19
  129. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  130. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1678 -153
  131. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  132. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -14
  133. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +20 -8
  135. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  136. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +99 -154
  137. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  138. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +195 -0
  139. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  140. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  141. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +1 -1
  142. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +1 -1
  143. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +42 -10
  144. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +42 -10
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +1 -1
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +52 -20
  148. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +1 -1
  149. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +52 -20
  150. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  151. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  152. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +107 -71
  153. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +44 -36
  155. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  156. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +13 -0
  157. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  158. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +1 -1
  159. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +1 -1
  160. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  161. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  162. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +20 -0
  163. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  164. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  165. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  166. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  167. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  168. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
  172. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  173. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  174. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  175. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  176. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +8 -8
  177. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  178. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +6 -6
  179. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
  180. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +2 -2
  181. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  182. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  183. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  184. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  185. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  186. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  187. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  188. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  189. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  190. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  191. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  192. package/artifacts/contracts/shared/Service.sol/Service.json +13 -0
  193. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  194. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  196. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  197. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  198. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +49 -7
  199. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  200. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +44 -28
  201. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  202. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -84
  203. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  204. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +23 -39
  205. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  206. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  207. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +92 -73
  209. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  210. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +33 -41
  211. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  212. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +186 -114
  213. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  214. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +18 -18
  215. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  216. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  217. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  218. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  219. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  220. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  221. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  222. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  223. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  224. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  225. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  226. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  227. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  228. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  229. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  230. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +125 -2
  231. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  233. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  235. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  236. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  237. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  239. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +114 -4
  241. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  244. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  246. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  248. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  250. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  252. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  256. package/contracts/authorization/AccessAdmin.sol +749 -0
  257. package/contracts/authorization/IAccess.sol +43 -0
  258. package/contracts/authorization/IAccessAdmin.sol +130 -0
  259. package/contracts/authorization/IModuleAuthorization.sol +27 -0
  260. package/contracts/authorization/IServiceAuthorization.sol +35 -0
  261. package/contracts/authorization/InstanceAdmin.sol +108 -0
  262. package/contracts/authorization/ModuleAuthorization.sol +116 -0
  263. package/contracts/authorization/ServiceAuthorization.sol +86 -0
  264. package/contracts/distribution/DistributionService.sol +3 -4
  265. package/contracts/instance/IInstance.sol +14 -6
  266. package/contracts/instance/IInstanceService.sol +24 -8
  267. package/contracts/instance/Instance.sol +63 -39
  268. package/contracts/instance/InstanceAdminNew.sol +74 -0
  269. package/contracts/instance/InstanceAuthorizationV3.sol +176 -0
  270. package/contracts/instance/InstanceAuthorizationsLib.sol +31 -3
  271. package/contracts/instance/InstanceReader.sol +29 -2
  272. package/contracts/instance/InstanceService.sol +85 -8
  273. package/contracts/instance/InstanceStore.sol +29 -20
  274. package/contracts/instance/base/BalanceStore.sol +11 -6
  275. package/contracts/instance/base/Cloneable.sol +2 -25
  276. package/contracts/instance/base/ObjectCounter.sol +21 -0
  277. package/contracts/instance/base/ObjectManager.sol +1 -3
  278. package/contracts/oracle/IOracle.sol +20 -0
  279. package/contracts/oracle/IOracleComponent.sol +32 -0
  280. package/contracts/oracle/IOracleService.sol +65 -0
  281. package/contracts/oracle/Oracle.sol +145 -0
  282. package/contracts/oracle/OracleService.sol +278 -0
  283. package/contracts/oracle/OracleServiceManager.sol +42 -0
  284. package/contracts/pool/BundleService.sol +19 -19
  285. package/contracts/pool/PoolService.sol +6 -7
  286. package/contracts/product/ApplicationService.sol +5 -5
  287. package/contracts/product/ClaimService.sol +5 -5
  288. package/contracts/product/IClaimService.sol +6 -0
  289. package/contracts/product/PolicyService.sol +5 -5
  290. package/contracts/product/PricingService.sol +5 -6
  291. package/contracts/product/ProductService.sol +5 -5
  292. package/contracts/registry/IRegistry.sol +1 -1
  293. package/contracts/registry/Registry.sol +7 -1
  294. package/contracts/registry/RegistryAdmin.sol +236 -148
  295. package/contracts/registry/RegistryService.sol +5 -5
  296. package/contracts/registry/RegistryServiceManager.sol +0 -5
  297. package/contracts/registry/ReleaseManager.sol +102 -172
  298. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  299. package/contracts/shared/AccessManagerCustom.sol +6 -1
  300. package/contracts/shared/AccessManagerExtended.sol +12 -1
  301. package/contracts/shared/Component.sol +3 -0
  302. package/contracts/shared/ComponentService.sol +30 -9
  303. package/contracts/shared/ComponentVerifyingService.sol +13 -7
  304. package/contracts/shared/IComponentService.sol +11 -0
  305. package/contracts/shared/IService.sol +7 -0
  306. package/contracts/shared/Lifecycle.sol +11 -2
  307. package/contracts/shared/Service.sol +27 -21
  308. package/contracts/staking/IStakingService.sol +11 -7
  309. package/contracts/staking/StakeManagerLib.sol +52 -0
  310. package/contracts/staking/Staking.sol +58 -96
  311. package/contracts/staking/StakingService.sol +61 -56
  312. package/contracts/staking/StakingServiceManager.sol +0 -1
  313. package/contracts/staking/StakingStore.sol +79 -38
  314. package/contracts/type/ObjectType.sol +162 -67
  315. package/contracts/type/RequestId.sol +75 -0
  316. package/contracts/type/RoleId.sol +77 -19
  317. package/contracts/type/Selector.sol +102 -0
  318. package/contracts/type/StateId.sol +12 -0
  319. package/contracts/type/String.sol +53 -0
  320. package/contracts/type/Timestamp.sol +6 -2
  321. package/package.json +3 -3
  322. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  323. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  324. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
@@ -10,7 +10,7 @@ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
10
10
 
11
11
  import {NftId} from "../type/NftId.sol";
12
12
  import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
- import {ObjectType, ObjectTypeLib, zeroObjectType, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
13
+ import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
14
14
  import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
15
15
  import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
16
16
  import {Seconds, SecondsLib} from "../type/Seconds.sol";
@@ -26,10 +26,11 @@ import {IRegisterable} from "../shared/IRegisterable.sol";
26
26
  import {IRegistry} from "./IRegistry.sol";
27
27
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
28
28
  import {IRegistryService} from "./IRegistryService.sol";
29
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
30
+ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
29
31
  import {RegistryAdmin} from "./RegistryAdmin.sol";
30
32
  import {Registry} from "./Registry.sol";
31
33
  import {TokenRegistry} from "./TokenRegistry.sol";
32
- import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
33
34
 
34
35
 
35
36
  contract ReleaseManager is
@@ -41,7 +42,7 @@ contract ReleaseManager is
41
42
 
42
43
  uint256 public constant INITIAL_GIF_VERSION = 3;
43
44
 
44
- event LogReleaseCreation(VersionPart version, bytes32 salt, AccessManagerExtendedWithDisableInitializeable accessManager);
45
+ event LogReleaseCreation(VersionPart version, bytes32 salt, address authority);
45
46
  event LogReleaseActivation(VersionPart version);
46
47
 
47
48
  // constructor
@@ -53,13 +54,16 @@ contract ReleaseManager is
53
54
  // prepareRelease
54
55
  error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
55
56
  error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
56
-
57
+ error ErrorReleaseManagerVersionMismatch(VersionPart expectedVersion, VersionPart providedVersion);
58
+ error ErrorReleaseManagerNoDomains(VersionPart version);
59
+
57
60
  // register staking
58
61
  //error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
59
62
 
60
63
  // registerService
61
64
  error ErrorReleaseManagerNoServiceRegistrationExpected();
62
65
  error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
66
+ error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
63
67
  error ErrorReleaseManagerNotService(IService service);
64
68
  error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
65
69
 
@@ -85,10 +89,6 @@ contract ReleaseManager is
85
89
  error ErrorReleaseManagerServiceSelfRegistration(IService service);
86
90
  error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
87
91
 
88
- // _verifyReleaseAuthorizations
89
- error ErrorReleaseManagerReleaseEmpty();
90
- error ErrorReleaseManagerReleaseServiceRoleInvalid(uint serviceIdx, address service, RoleId role);
91
-
92
92
  Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
93
93
 
94
94
  RegistryAdmin public immutable _admin;
@@ -97,16 +97,20 @@ contract ReleaseManager is
97
97
  IRegisterable private _staking;
98
98
  address private _stakingOwner;
99
99
 
100
- mapping(VersionPart version => AccessManagerExtendedWithDisableInitializeable accessManager) internal _releaseAccessManager;
100
+ // TODO remove once it's clear that release authority will always be registry authority
101
+ mapping(VersionPart version => address authority) internal _releaseAccessManager;
101
102
  mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
102
103
  mapping(address registryService => VersionPart version) _releaseVersionByAddress;
103
104
 
105
+ mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
106
+
104
107
  VersionPart immutable internal _initial;// first active version
105
108
  VersionPart internal _latest; // latest active version
106
109
  VersionPart internal _next; // version to create and activate
107
110
  StateId internal _state; // current state of release manager
108
111
 
109
- uint256 internal _awaitingRegistration; // "services left to register" counter
112
+ uint256 internal _registeredServices;
113
+ uint256 internal _servicesToRegister;
110
114
 
111
115
  // deployer of this contract must be gif admin
112
116
  constructor(Registry registry)
@@ -143,32 +147,55 @@ contract ReleaseManager is
143
147
  }
144
148
 
145
149
  _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
146
- _awaitingRegistration = 0;
150
+ _servicesToRegister = 0;
151
+ _registeredServices = 0;
147
152
  _state = SCHEDULED();
148
153
 
149
154
  return _next;
150
155
  }
151
156
 
152
- // TODO order of events
153
157
  function prepareNextRelease(
154
- address[] memory addresses,
155
- string[] memory names,
156
- RoleId[][] memory serviceRoles,
157
- string[][] memory serviceRoleNames,
158
- RoleId[][] memory functionRoles,
159
- string[][] memory functionRoleNames,
160
- bytes4[][][] memory selectors,
158
+ IServiceAuthorization serviceAuthorization,
161
159
  bytes32 salt
162
160
  )
163
161
  external
164
162
  restricted() // GIF_MANAGER_ROLE
165
163
  returns(
166
- address releaseAccessManagerAddress,
164
+ address authority,
167
165
  VersionPart version,
168
166
  bytes32 releaseSalt
169
167
  )
170
168
  {
171
- version = getNextVersion();
169
+ // verify release manager is in proper state to start deploying a next release
170
+ if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
171
+ revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
172
+ }
173
+
174
+ // verify prepareNextRelease is only called once per release
175
+ if(_servicesToRegister > 0) {
176
+ revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
177
+ }
178
+
179
+ // verify authorizaion contract release matches with expected version
180
+ VersionPart releaseVersion = serviceAuthorization.getRelease();
181
+ if (releaseVersion != _next) {
182
+ revert ErrorReleaseManagerVersionMismatch(_next, releaseVersion);
183
+ }
184
+
185
+ // sanity check to ensure service domain list is not empty
186
+ uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
187
+ if (serviceDomainsCount == 0) {
188
+ revert ErrorReleaseManagerNoDomains(_next);
189
+ }
190
+
191
+ _state = DEPLOYING();
192
+ _servicesToRegister = serviceDomainsCount;
193
+
194
+ // store release specific service authorization
195
+ authority = _admin.authority();
196
+ _serviceAuthorization[_next] = serviceAuthorization;
197
+ // TODO refactor: authority no longer release specific
198
+ _releaseAccessManager[_next] = authority;
172
199
 
173
200
  // ensures unique salt
174
201
  releaseSalt = keccak256(
@@ -176,34 +203,7 @@ contract ReleaseManager is
176
203
  bytes32(version.toInt()),
177
204
  salt));
178
205
 
179
- releaseAccessManagerAddress = Clones.cloneDeterministic(_releaseAccessManagerCodeAddress, releaseSalt);
180
- AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
181
- releaseAccessManager.initialize(address(this), version);
182
-
183
- if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
184
- revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
185
- }
186
-
187
- _verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
188
-
189
- if(_awaitingRegistration > 0) {
190
- revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
191
- }
192
- // TODO instead of copying just set ServiceAuthorizationsLib for release and array of domains???
193
- _releaseInfo[version].version = version;
194
- _releaseInfo[version].salt = releaseSalt;
195
- _releaseInfo[version].addresses = addresses;
196
- _releaseInfo[version].names = names;
197
- _releaseInfo[version].serviceRoles = serviceRoles;
198
- _releaseInfo[version].serviceRoleNames = serviceRoleNames;
199
- _releaseInfo[version].functionRoles = functionRoles;
200
- _releaseInfo[version].functionRoleNames = functionRoleNames;
201
- _releaseInfo[version].selectors = selectors;
202
- _awaitingRegistration = addresses.length;
203
- _state = DEPLOYING();
204
- _releaseAccessManager[version] = releaseAccessManager;
205
-
206
- emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
206
+ emit LogReleaseCreation(version, releaseSalt, authority);
207
207
  }
208
208
 
209
209
 
@@ -212,59 +212,52 @@ contract ReleaseManager is
212
212
  restricted // GIF_MANAGER_ROLE
213
213
  returns(NftId nftId)
214
214
  {
215
+ // TODO is it usefull to check transition from A to A?
215
216
  if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
216
217
  revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
217
218
  }
218
219
 
220
+ if (_servicesToRegister == _registeredServices) {
221
+ revert ErrorReleaseManagerNoServiceRegistrationExpected();
222
+ }
223
+
219
224
  (
220
225
  IRegistry.ObjectInfo memory info,
221
226
  ObjectType domain,
222
227
  VersionPart version
223
228
  ) = _verifyService(service);
224
229
 
225
- // redundant with state var
226
- if (_awaitingRegistration == 0) {
227
- revert ErrorReleaseManagerNoServiceRegistrationExpected();
230
+ ObjectType expectedDomain = _serviceAuthorization[version].getServiceDomains()[_registeredServices];
231
+ if (service.getDomain() != expectedDomain) {
232
+ revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, service.getDomain());
228
233
  }
229
234
 
230
- uint serviceIdx = _awaitingRegistration - 1;
231
- address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
232
- // TODO temp, while typescript addresses computation is not implemented
233
- /*if(address(service) != serviceAddress) {
234
- revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
235
- }*/
236
-
237
- _setServiceAuthorizations(
238
- _releaseAccessManager[version],
239
- // TODO temp, while typescript addresses computation is not implemented
240
- address(service),//serviceAddress,
241
- _releaseInfo[version].names[serviceIdx],
242
- _releaseInfo[version].serviceRoles[serviceIdx],
243
- _releaseInfo[version].serviceRoleNames[serviceIdx],
244
- _releaseInfo[version].functionRoles[serviceIdx],
245
- _releaseInfo[version].functionRoleNames[serviceIdx],
246
- _releaseInfo[version].selectors[serviceIdx]);
247
-
248
- // TODO decide for one of the approaches
249
- // // service to service authorization
250
- // ServiceAuthorizationsLib.ServiceAuthorization memory authz = ServiceAuthorizationsLib.getAuthorizations(domain);
251
- // for(uint8 idx = 0; idx < authz.authorizedRole.length; idx++) {
252
- // _accessManager.setTargetFunctionRole(
253
- // address(service),
254
- // authz.authorizedSelectors[idx],
255
- // authz.authorizedRole[idx]);
256
- // }
257
-
258
- _awaitingRegistration = serviceIdx;
259
- // TODO end state depends on (_awaitingRegistration == 0)
260
- _state = DEPLOYING();
261
-
262
235
  // checked in registry
263
236
  _releaseInfo[version].domains.push(domain);
264
237
 
238
+ // register service with registry
265
239
  nftId = _registry.registerService(info, version, domain);
240
+ _registeredServices++;
266
241
 
267
242
  service.linkToRegisteredNftId();
243
+
244
+ // setup service authorization
245
+ _admin.authorizeService(
246
+ _serviceAuthorization[version],
247
+ service);
248
+
249
+ // TODO consider to extend this to REGISTRY
250
+ // special roles for registry/staking/pool service
251
+ if (domain == STAKING() || domain == POOL()) {
252
+ // TODO rename to grantServiceDomainRole()
253
+ _admin.grantServiceRoleForAllVersions(service, domain);
254
+ }
255
+
256
+ if (_registeredServices < _servicesToRegister) {
257
+ _state = DEPLOYING();
258
+ } else {
259
+ // TODO end state depends on (_awaitingRegistration == 0)
260
+ }
268
261
  }
269
262
 
270
263
 
@@ -276,20 +269,18 @@ contract ReleaseManager is
276
269
  revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
277
270
  }
278
271
 
272
+ // release fully deployed
279
273
  VersionPart version = _next;
280
- address service = _registry.getServiceAddress(REGISTRY(), version);
274
+ if(_registeredServices < _servicesToRegister) {
275
+ revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
276
+ }
281
277
 
282
- // release exists, registry service is a MUST
283
- //if(_releaseAccessManager[version] == address(0)) {
278
+ // release exists, registry service MUST exist
279
+ address service = _registry.getServiceAddress(REGISTRY(), version);
284
280
  if(service == address(0)) {
285
281
  revert ErrorReleaseManagerReleaseNotCreated(version);
286
282
  }
287
283
 
288
- // release fully deployed
289
- if(_awaitingRegistration > 0) {
290
- revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
291
- }
292
-
293
284
  // release is not activated
294
285
  if(_releaseInfo[version].activatedAt.gtz()) {
295
286
  revert ErrorReleaseManagerReleaseAlreadyActivated(version);
@@ -321,7 +312,8 @@ contract ReleaseManager is
321
312
 
322
313
  disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
323
314
 
324
- _releaseAccessManager[version].disable(disableDelay);
315
+ // TODO come up with a substitute
316
+ // _releaseAccessManager[version].disable(disableDelay);
325
317
 
326
318
  _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
327
319
  }
@@ -336,7 +328,8 @@ contract ReleaseManager is
336
328
  //}
337
329
 
338
330
  // reverts if disable delay expired
339
- _releaseAccessManager[version].enable();
331
+ // TODO come up with a substitute
332
+ // _releaseAccessManager[version].enable();
340
333
 
341
334
  _releaseInfo[version].disabledAt = zeroTimestamp();
342
335
  }
@@ -381,13 +374,23 @@ contract ReleaseManager is
381
374
  }
382
375
 
383
376
  function getRemainingServicesToRegister() external view returns (uint256 services) {
384
- return _awaitingRegistration;
377
+ return _servicesToRegister - _registeredServices;
385
378
  }
386
379
 
380
+ // TODO cleanup
387
381
  function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
388
- return _releaseAccessManager[version];
382
+ // return _releaseAccessManager[version];
383
+ }
384
+
385
+ function getServiceAuthorization(VersionPart version)
386
+ external
387
+ view
388
+ returns (IServiceAuthorization serviceAuthorization)
389
+ {
390
+ return _serviceAuthorization[version];
389
391
  }
390
- // TODO tokenr registry knows nothing about adfmin, only registry
392
+
393
+ // TODO token registry knows nothing about adfmin, only registry
391
394
  function getRegistryAdmin() external view returns (address) {
392
395
  return address(_admin);
393
396
  }
@@ -424,6 +427,7 @@ contract ReleaseManager is
424
427
  if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
425
428
  if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
426
429
  if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
430
+ // TODO active -> scheduled missing, add tests to cover this and more scenarios (#358)
427
431
 
428
432
  return false;
429
433
  }
@@ -506,81 +510,7 @@ contract ReleaseManager is
506
510
  }
507
511
  }
508
512
 
509
-
510
- function _verifyReleaseAuthorizations(
511
- address[] memory serviceAddress,
512
- RoleId[][] memory serviceRoles,
513
- RoleId[][] memory functionRoles,
514
- bytes4[][][] memory selectors
515
- )
516
- internal
517
- pure
518
- {
519
- if(serviceAddress.length == 0) {
520
- revert ErrorReleaseManagerReleaseEmpty();
521
- }
522
-
523
- for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
524
- {
525
- for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
526
- {
527
- RoleId role = serviceRoles[serviceIdx][roleIdx];
528
- if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
529
- revert ErrorReleaseManagerReleaseServiceRoleInvalid(serviceIdx, serviceAddress[serviceIdx], role);
530
- }
531
- }
532
- }
533
-
534
- // TODO no duplicate service "domain" role per release
535
- // TODO no duplicate service roles per service
536
- // TODO no duplicate service function roles per service
537
- // TODO no duplicate service function selectors per service
538
- }
539
-
540
- function _setServiceAuthorizations(
541
- AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
542
- address serviceAddress,
543
- string memory serviceName,
544
- RoleId[] memory serviceRoles,
545
- string[] memory serviceRoleNames,
546
- RoleId[] memory functionRoles,
547
- string[] memory functionRoleNames,
548
- bytes4[][] memory selectors
549
- )
550
- internal
551
- {
552
- accessManager.createTarget(serviceAddress, serviceName);
553
-
554
- for(uint idx = 0; idx < functionRoles.length; idx++)
555
- {
556
- uint64 roleInt = functionRoles[idx].toInt();
557
-
558
- if(!accessManager.isRoleExists(roleInt)) {
559
- accessManager.createRole(roleInt, functionRoleNames[idx]);
560
- }
561
-
562
- accessManager.setTargetFunctionRole(
563
- serviceAddress,
564
- selectors[idx],
565
- functionRoles[idx].toInt());
566
- }
567
-
568
- for(uint idx = 0; idx < serviceRoles.length; idx++)
569
- {
570
- uint64 roleInt = serviceRoles[idx].toInt();
571
-
572
- if(!accessManager.isRoleExists(roleInt)) {
573
- accessManager.createRole(roleInt, serviceRoleNames[idx]);
574
- }
575
-
576
- accessManager.grantRole(
577
- serviceRoles[idx].toInt(),
578
- serviceAddress,
579
- 0);
580
- }
581
- }
582
-
583
- // returns true iff a the address passes some simple proxy tests.
513
+ /// @dev returns true iff a the address passes some simple proxy tests.
584
514
  function _isRegistry(address registryAddress) internal view returns (bool) {
585
515
 
586
516
  // zero address is certainly not registry
@@ -0,0 +1,200 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {
5
+ ALL, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE
6
+ } from "../../contracts/type/ObjectType.sol";
7
+
8
+ import {ComponentService} from "../shared/ComponentService.sol";
9
+ import {IAccess} from "../authorization/IAccess.sol";
10
+ import {IBundleService} from "../pool/IBundleService.sol";
11
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
12
+ import {InstanceService} from "../instance/InstanceService.sol";
13
+ import {IInstanceService} from "../instance/IInstanceService.sol";
14
+ import {IPoolService} from "../pool/IPoolService.sol";
15
+ import {IStakingService} from "../staking/IStakingService.sol";
16
+ import {IRegistryService} from "./IRegistryService.sol";
17
+ import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
18
+
19
+
20
+ contract ServiceAuthorizationV3
21
+ is ServiceAuthorization
22
+ {
23
+
24
+ constructor(string memory commitHash)
25
+ ServiceAuthorization(commitHash)
26
+ {}
27
+
28
+ function _setupDomains()
29
+ internal
30
+ override
31
+ {
32
+ _authorizeDomain(REGISTRY(), address(1));
33
+ _authorizeDomain(STAKING(), address(2));
34
+ _authorizeDomain(INSTANCE(), address(3));
35
+ _authorizeDomain(COMPONENT(), address(4));
36
+ _authorizeDomain(DISTRIBUTION(), address(5));
37
+ _authorizeDomain(PRICE(), address(6));
38
+ _authorizeDomain(BUNDLE(), address(7));
39
+ _authorizeDomain(POOL(), address(8));
40
+ _authorizeDomain(ORACLE(), address(9));
41
+ _authorizeDomain(PRODUCT(), address(10));
42
+ _authorizeDomain(CLAIM(), address(11));
43
+ _authorizeDomain(APPLICATION(), address(12));
44
+ _authorizeDomain(POLICY(), address(13));
45
+ }
46
+
47
+
48
+ function _setupDomainAuthorizations()
49
+ internal
50
+ override
51
+ {
52
+ _setupIRegistryServiceAuthorization();
53
+ _setupStakingServiceAuthorization();
54
+ _setupInstanceServiceAuthorization();
55
+ _setupComponentServiceAuthorization();
56
+ _setupDistributionServiceAuthorization();
57
+ _setupPoolServiceAuthorization();
58
+ _setupBundleServiceAuthorization();
59
+ }
60
+
61
+
62
+ /// @dev registry service authorization.
63
+ /// authorized functions MUST be implemented with a restricted modifier
64
+ function _setupIRegistryServiceAuthorization()
65
+ internal
66
+ {
67
+ IAccess.FunctionInfo[] storage functions;
68
+
69
+ functions = _authorizeForService(REGISTRY(), APPLICATION());
70
+ _authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
71
+
72
+ functions = _authorizeForService(REGISTRY(), POOL());
73
+ _authorize(functions, IRegistryService.registerPool.selector, "registerPool");
74
+
75
+ functions = _authorizeForService(REGISTRY(), BUNDLE());
76
+ _authorize(functions, IRegistryService.registerBundle.selector, "registerBundle");
77
+
78
+ functions = _authorizeForService(REGISTRY(), DISTRIBUTION());
79
+ _authorize(functions, IRegistryService.registerDistribution.selector, "registerDistribution");
80
+ _authorize(functions, IRegistryService.registerDistributor.selector, "registerDistributor");
81
+
82
+ functions = _authorizeForService(REGISTRY(), COMPONENT());
83
+ _authorize(functions, IRegistryService.registerComponent.selector, "registerComponent");
84
+
85
+ functions = _authorizeForService(REGISTRY(), INSTANCE());
86
+ _authorize(functions, IRegistryService.registerInstance.selector, "registerInstance");
87
+
88
+ functions = _authorizeForService(REGISTRY(), STAKING());
89
+ _authorize(functions, IRegistryService.registerStake.selector, "registerStake");
90
+
91
+ functions = _authorizeForService(REGISTRY(), PRODUCT());
92
+ _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
93
+ }
94
+
95
+
96
+ /// @dev staking service authorization.
97
+ /// authorized functions MUST be implemented with a restricted modifier
98
+ function _setupStakingServiceAuthorization()
99
+ internal
100
+ {
101
+ IAccess.FunctionInfo[] storage functions;
102
+
103
+ functions = _authorizeForService(STAKING(), INSTANCE());
104
+ _authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
105
+ _authorize(functions, IStakingService.setInstanceLockingPeriod.selector, "setInstanceLockingPeriod");
106
+ _authorize(functions, IStakingService.setInstanceRewardRate.selector, "setInstanceRewardRate");
107
+ _authorize(functions, IStakingService.refillInstanceRewardReserves.selector, "refillInstanceRewardReserves");
108
+ _authorize(functions, IStakingService.withdrawInstanceRewardReserves.selector, "withdrawInstanceRewardReserves");
109
+
110
+ functions = _authorizeForService(STAKING(), ALL());
111
+ _authorize(functions, IStakingService.create.selector, "create");
112
+ _authorize(functions, IStakingService.stake.selector, "stake");
113
+ _authorize(functions, IStakingService.restakeToNewTarget.selector, "restakeToNewTarget");
114
+ _authorize(functions, IStakingService.updateRewards.selector, "updateRewards");
115
+ _authorize(functions, IStakingService.claimRewards.selector, "claimRewards");
116
+ _authorize(functions, IStakingService.unstake.selector, "unstake");
117
+ }
118
+
119
+
120
+ /// @dev Instance service function authorization.
121
+ function _setupInstanceServiceAuthorization()
122
+ internal
123
+ {
124
+ IAccess.FunctionInfo[] storage functions;
125
+
126
+ functions = _authorizeForService(INSTANCE(), COMPONENT());
127
+ _authorize(functions, IInstanceService.createComponentTarget.selector, "createComponentTarget");
128
+ }
129
+
130
+
131
+ /// @dev Component service function authorization.
132
+ function _setupComponentServiceAuthorization()
133
+ internal
134
+ {
135
+ // authz.authorizations = new DomainAuthorization[](4);
136
+
137
+ // authz.authorizations[0].domain = POLICY();
138
+ // _functions = new IAccessAdmin.Function[](1);
139
+ // __authorize(ComponentService.increaseProductFees.selector, "increaseProductFees"));
140
+ // authz.authorizations[0].functions = _functions;
141
+
142
+ // authz.authorizations[1].domain = DISTRIBUTION();
143
+ // _functions = new IAccessAdmin.Function[](1);
144
+ // __authorize(ComponentService.increaseDistributionBalance.selector, "increaseDistributionBalance"));
145
+ // authz.authorizations[1].functions = _functions;
146
+
147
+ // authz.authorizations[2].domain = POOL();
148
+ // _functions = new IAccessAdmin.Function[](1);
149
+ // __authorize(ComponentService.increasePoolBalance.selector, "increasePoolBalance"));
150
+ // authz.authorizations[2].functions = _functions;
151
+
152
+ // authz.authorizations[3].domain = BUNDLE();
153
+ // _functions = new IAccessAdmin.Function[](1);
154
+ // __authorize(ComponentService.increaseBundleBalance.selector, "increaseBundleBalance"));
155
+ // authz.authorizations[3].functions = _functions;
156
+ }
157
+
158
+ /// @dev Distribution service function authorization.
159
+ function _setupDistributionServiceAuthorization()
160
+ internal
161
+ {
162
+ IAccess.FunctionInfo[] storage functions;
163
+
164
+ functions = _authorizeForService(DISTRIBUTION(), POLICY());
165
+ _authorize(functions, IDistributionService.processSale.selector, "processSale");
166
+ }
167
+
168
+
169
+ /// @dev Pool service function authorization.
170
+ function _setupPoolServiceAuthorization()
171
+ internal
172
+ {
173
+ IAccess.FunctionInfo[] storage functions;
174
+
175
+ functions = _authorizeForService(POOL(), POLICY());
176
+ _authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
177
+ _authorize(functions, IPoolService.releaseCollateral.selector, "releaseCollateral");
178
+ _authorize(functions, IPoolService.reduceCollateral.selector, "reduceCollateral");
179
+ _authorize(functions, IPoolService.processSale.selector, "processSale");
180
+
181
+ functions = _authorizeForService(POOL(), CLAIM());
182
+ _authorize(functions, IPoolService.reduceCollateral.selector, "reduceCollateral");
183
+ }
184
+
185
+
186
+ /// @dev Instance service function authorization.
187
+ function _setupBundleServiceAuthorization()
188
+ internal
189
+ {
190
+ IAccess.FunctionInfo[] storage functions;
191
+
192
+ functions = _authorizeForService(BUNDLE(), POOL());
193
+ _authorize(functions, IBundleService.create.selector, "create");
194
+ _authorize(functions, IBundleService.close.selector, "close");
195
+ _authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
196
+ _authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
197
+ _authorize(functions, IBundleService.unlinkPolicy.selector, "unlinkPolicy");
198
+ }
199
+ }
200
+
@@ -17,7 +17,12 @@ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Ini
17
17
  2. _getAdminRestrictions() private view -> internal virtual view
18
18
  3. _checkSelector() private pure -> internal pure
19
19
  */
20
- abstract contract AccessManagerCustom is Initializable, ContextUpgradeable, MulticallUpgradeable, IAccessManager {
20
+ abstract contract AccessManagerCustom is
21
+ Initializable,
22
+ ContextUpgradeable,
23
+ MulticallUpgradeable,
24
+ IAccessManager
25
+ {
21
26
  using Time for *;
22
27
 
23
28
  // Structure that stores the details for a target contract.
@@ -13,7 +13,10 @@ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
13
13
 
14
14
 
15
15
  // IMPORTANT: check role/target for existance before using return value of getter
16
- contract AccessManagerExtended is AccessManagerCustom, IAccessManagerExtended {
16
+ contract AccessManagerExtended is
17
+ AccessManagerCustom,
18
+ IAccessManagerExtended
19
+ {
17
20
  using EnumerableSet for EnumerableSet.AddressSet;
18
21
 
19
22
  string constant private ADMIN_ROLE_NAME = "Admin";
@@ -76,6 +79,14 @@ contract AccessManagerExtended is AccessManagerCustom, IAccessManagerExtended {
76
79
  return $._targetAddressForName[name] != address(0);
77
80
  }
78
81
 
82
+ function getTargets() public view returns (uint256 numberOfTargets) {
83
+ return _getAccessManagerExtendedStorage()._targetAddresses.length;
84
+ }
85
+
86
+ function getTarget(uint256 idx) public view returns (address target) {
87
+ return _getAccessManagerExtendedStorage()._targetAddresses[idx];
88
+ }
89
+
79
90
  function getTargetAddress(string memory name) public view returns(address targetAddress) {
80
91
  AccessManagerExtendedStorage storage $ = _getAccessManagerExtendedStorage();
81
92
  return $._targetAddressForName[name];