@etherisc/gif-next 0.0.2-ffa91a6-022 → 3.0.0-0fefe0d-162

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 (501) hide show
  1. package/README.md +123 -332
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +372 -131
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1509 -174
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +266 -64
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +263 -87
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +102 -19
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +63 -38
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +269 -69
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -12
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +376 -147
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +160 -78
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -11
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +232 -19
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +108 -79
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +268 -68
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +136 -95
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +268 -68
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  50. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +500 -0
  51. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +4 -0
  52. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +229 -0
  53. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  54. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  55. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
  57. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  59. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
  61. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2347 -0
  63. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
  65. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  66. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +586 -0
  67. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  68. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  69. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +86 -45
  71. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +268 -68
  73. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  74. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +35 -26
  75. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  76. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -105
  77. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  78. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +268 -68
  79. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +333 -147
  81. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +268 -68
  83. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  84. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
  85. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  86. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  87. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  88. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  89. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  90. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +374 -35
  91. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +305 -5
  93. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  94. package/artifacts/contracts/instance/Instance.sol/Instance.json +425 -97
  95. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  96. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +757 -393
  97. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  98. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +236 -80
  99. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  100. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +723 -553
  101. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +331 -31
  103. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  104. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -42
  105. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  106. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1323 -2012
  107. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  108. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  109. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  110. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
  111. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  112. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  113. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  114. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  115. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  116. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  117. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  118. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  119. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  120. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  121. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
  122. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  123. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  124. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  125. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  126. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  127. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  128. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  129. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +25 -16
  130. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  131. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +282 -65
  132. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  133. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  134. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -10
  135. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  136. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
  137. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  138. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -10
  139. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  140. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +83 -38
  141. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
  143. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  144. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -58
  145. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +268 -68
  147. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  148. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +300 -123
  149. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -58
  151. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  152. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +186 -33
  153. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  154. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -20
  155. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  156. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +238 -19
  157. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  158. package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -20
  159. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  160. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +100 -34
  161. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  162. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +338 -79
  163. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  164. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -63
  165. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  166. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +216 -59
  167. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +113 -43
  169. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  170. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -37
  171. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  172. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +268 -68
  173. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  174. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
  175. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -70
  177. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  178. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +166 -1
  179. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  180. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
  181. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  182. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
  183. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  184. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +29 -0
  185. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  186. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -31
  187. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  188. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +203 -18
  189. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  190. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
  191. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  192. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +511 -21
  193. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  194. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +138 -72
  195. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  196. package/artifacts/contracts/product/PricingService.sol/PricingService.json +93 -112
  197. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  198. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +115 -65
  199. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  200. package/artifacts/contracts/product/Product.sol/Product.json +40 -31
  201. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  202. package/artifacts/contracts/product/RiskService.sol/RiskService.json +231 -46
  203. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  204. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +101 -43
  205. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  206. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +33 -22
  208. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  209. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
  210. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  211. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  212. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  213. package/artifacts/contracts/registry/Registry.sol/Registry.json +71 -60
  214. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  215. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +542 -305
  216. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  217. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +335 -76
  218. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  219. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +41 -12
  220. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  221. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
  222. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  223. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +548 -231
  224. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  226. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  227. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +167 -103
  228. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  229. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
  230. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  231. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
  232. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Component.sol/Component.json +19 -10
  234. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  235. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +196 -201
  236. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  237. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +130 -64
  238. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  239. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +76 -41
  240. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  241. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  242. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  243. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
  244. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -10
  246. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +111 -132
  248. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -10
  250. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  251. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  252. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  253. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  254. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  255. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
  256. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  257. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  258. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  259. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  260. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  261. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -10
  262. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  263. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  264. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  265. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  266. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  267. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  268. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  269. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  270. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
  271. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  272. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  273. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  274. package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  277. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  278. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
  279. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  280. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  281. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  282. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1390 -134
  283. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  284. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +97 -117
  285. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  286. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  287. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  288. package/artifacts/contracts/staking/Staking.sol/Staking.json +1479 -192
  289. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +77 -76
  291. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  292. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +139 -64
  293. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  294. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +296 -152
  295. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  296. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +131 -167
  297. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  298. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +96 -46
  299. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  300. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1615 -815
  301. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  302. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  303. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  304. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +153 -91
  305. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  306. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/Amount.sol/AmountLib.json +10 -10
  308. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  310. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  312. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  314. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  316. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
  318. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  320. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  321. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  322. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  324. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  325. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  326. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +22 -25
  328. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  330. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  332. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  334. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  335. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  336. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  338. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
  340. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +64 -2
  342. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  346. package/artifacts/contracts/type/String.sol/StrLib.json +69 -2
  347. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  348. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
  349. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  350. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
  351. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  352. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  353. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  354. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  355. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  356. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
  357. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  358. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  359. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  360. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  361. package/contracts/accounting/AccountingService.sol +15 -3
  362. package/contracts/accounting/IAccountingService.sol +4 -2
  363. package/contracts/authorization/AccessAdmin.sol +292 -317
  364. package/contracts/authorization/AccessAdminLib.sol +517 -22
  365. package/contracts/authorization/AccessManagerCloneable.sol +0 -18
  366. package/contracts/authorization/Authorization.sol +64 -239
  367. package/contracts/authorization/IAccess.sol +29 -12
  368. package/contracts/authorization/IAccessAdmin.sol +25 -53
  369. package/contracts/authorization/IAuthorization.sol +3 -57
  370. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  371. package/contracts/authorization/ServiceAuthorization.sol +228 -34
  372. package/contracts/distribution/BasicDistribution.sol +3 -4
  373. package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
  374. package/contracts/distribution/Distribution.sol +9 -8
  375. package/contracts/distribution/DistributionService.sol +125 -62
  376. package/contracts/distribution/IDistributionComponent.sol +3 -1
  377. package/contracts/distribution/IDistributionService.sol +20 -8
  378. package/contracts/examples/fire/FireProduct.sol +6 -6
  379. package/contracts/examples/flight/FlightLib.sol +311 -0
  380. package/contracts/examples/flight/FlightMessageVerifier.sol +128 -0
  381. package/contracts/examples/flight/FlightOracle.sol +167 -0
  382. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  383. package/contracts/examples/flight/FlightPool.sol +89 -0
  384. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  385. package/contracts/examples/flight/FlightProduct.sol +625 -0
  386. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  387. package/contracts/examples/flight/FlightUSD.sol +28 -0
  388. package/contracts/examples/flight/originalV1.sol +396 -0
  389. package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -19
  390. package/contracts/instance/BaseStore.sol +93 -0
  391. package/contracts/instance/IBaseStore.sol +37 -0
  392. package/contracts/instance/IInstance.sol +57 -6
  393. package/contracts/instance/IInstanceService.sol +42 -7
  394. package/contracts/instance/Instance.sol +111 -56
  395. package/contracts/instance/InstanceAdmin.sol +151 -294
  396. package/contracts/instance/InstanceAuthorizationV3.sol +106 -66
  397. package/contracts/instance/InstanceReader.sol +370 -392
  398. package/contracts/instance/InstanceService.sol +186 -134
  399. package/contracts/instance/InstanceStore.sol +153 -128
  400. package/contracts/instance/ProductStore.sol +290 -0
  401. package/contracts/instance/RiskSet.sol +10 -2
  402. package/contracts/instance/TargetNames.sol +10 -0
  403. package/contracts/instance/base/BalanceStore.sol +4 -6
  404. package/contracts/instance/base/ObjectLifecycle.sol +2 -6
  405. package/contracts/instance/module/IBundle.sol +6 -5
  406. package/contracts/instance/module/IComponents.sol +15 -5
  407. package/contracts/instance/module/IDistribution.sol +17 -7
  408. package/contracts/instance/module/IPolicy.sol +28 -8
  409. package/contracts/instance/module/IRisk.sol +2 -0
  410. package/contracts/oracle/BasicOracle.sol +2 -3
  411. package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
  412. package/contracts/oracle/IOracle.sol +9 -4
  413. package/contracts/oracle/IOracleService.sol +12 -12
  414. package/contracts/oracle/Oracle.sol +4 -6
  415. package/contracts/oracle/OracleService.sol +8 -8
  416. package/contracts/pool/BasicPool.sol +4 -16
  417. package/contracts/pool/BasicPoolAuthorization.sol +10 -5
  418. package/contracts/pool/BundleService.sol +34 -43
  419. package/contracts/pool/IBundleService.sol +14 -13
  420. package/contracts/pool/IPoolService.sol +7 -2
  421. package/contracts/pool/Pool.sol +6 -18
  422. package/contracts/pool/PoolLib.sol +127 -2
  423. package/contracts/pool/PoolService.sol +40 -181
  424. package/contracts/product/ApplicationService.sol +64 -11
  425. package/contracts/product/BasicProduct.sol +2 -3
  426. package/contracts/product/BasicProductAuthorization.sol +13 -5
  427. package/contracts/product/ClaimService.sol +99 -105
  428. package/contracts/product/IApplicationService.sol +21 -2
  429. package/contracts/product/IClaimService.sol +5 -4
  430. package/contracts/product/IPolicyService.sol +9 -2
  431. package/contracts/product/IRiskService.sol +18 -3
  432. package/contracts/product/PolicyService.sol +40 -59
  433. package/contracts/product/PolicyServiceLib.sol +79 -5
  434. package/contracts/product/PricingService.sol +28 -31
  435. package/contracts/product/Product.sol +40 -16
  436. package/contracts/product/RiskService.sol +50 -15
  437. package/contracts/registry/IRegistry.sol +15 -9
  438. package/contracts/registry/IRelease.sol +6 -3
  439. package/contracts/registry/Registry.sol +15 -9
  440. package/contracts/registry/RegistryAdmin.sol +33 -118
  441. package/contracts/registry/RegistryAuthorization.sol +139 -69
  442. package/contracts/registry/RegistryService.sol +1 -1
  443. package/contracts/registry/ReleaseAdmin.sol +52 -106
  444. package/contracts/registry/ReleaseRegistry.sol +20 -12
  445. package/contracts/registry/ServiceAuthorizationV3.sol +43 -32
  446. package/contracts/registry/TokenRegistry.sol +56 -52
  447. package/contracts/shared/Component.sol +8 -8
  448. package/contracts/shared/ComponentService.sol +245 -262
  449. package/contracts/shared/ContractLib.sol +106 -75
  450. package/contracts/shared/EcdsaChecker.sol +5 -0
  451. package/contracts/shared/IComponent.sol +1 -1
  452. package/contracts/shared/IComponentService.sol +14 -15
  453. package/contracts/shared/INftOwnable.sol +2 -0
  454. package/contracts/shared/IRegisterable.sol +0 -1
  455. package/contracts/shared/InstanceLinkedComponent.sol +63 -26
  456. package/contracts/shared/NftOwnable.sol +3 -1
  457. package/contracts/shared/PolicyHolder.sol +3 -2
  458. package/contracts/shared/Service.sol +6 -4
  459. package/contracts/staking/IStaking.sol +261 -70
  460. package/contracts/staking/IStakingService.sol +39 -84
  461. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  462. package/contracts/staking/Staking.sol +468 -217
  463. package/contracts/staking/StakingLib.sol +38 -124
  464. package/contracts/staking/StakingManager.sol +4 -3
  465. package/contracts/staking/StakingReader.sol +62 -71
  466. package/contracts/staking/StakingService.sol +42 -185
  467. package/contracts/staking/StakingServiceManager.sol +1 -0
  468. package/contracts/staking/StakingStore.sol +1093 -331
  469. package/contracts/staking/TargetHandler.sol +132 -0
  470. package/contracts/staking/TargetManagerLib.sol +69 -46
  471. package/contracts/type/Amount.sol +4 -0
  472. package/contracts/type/Blocknumber.sol +17 -22
  473. package/contracts/type/ChainId.sol +101 -0
  474. package/contracts/type/Fee.sol +8 -8
  475. package/contracts/type/NftId.sol +3 -3
  476. package/contracts/type/ObjectType.sol +17 -33
  477. package/contracts/type/Referral.sol +6 -0
  478. package/contracts/type/RequestIdSet.sol +62 -0
  479. package/contracts/type/RoleId.sol +57 -59
  480. package/contracts/type/Seconds.sol +23 -0
  481. package/contracts/type/String.sol +42 -0
  482. package/contracts/type/Timestamp.sol +14 -3
  483. package/contracts/type/UFixed.sol +28 -10
  484. package/contracts/upgradeability/IVersionable.sol +3 -0
  485. package/contracts/upgradeability/ProxyManager.sol +26 -12
  486. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  487. package/contracts/upgradeability/Versionable.sol +6 -3
  488. package/package.json +2 -1
  489. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  490. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
  491. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  492. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
  493. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  494. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  495. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
  496. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  497. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  498. package/contracts/shared/ComponentVerifyingService.sol +0 -128
  499. package/contracts/shared/IKeyValueStore.sol +0 -54
  500. package/contracts/shared/KeyValueStore.sol +0 -131
  501. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -3,26 +3,25 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
5
  import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
6
- import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
7
6
 
7
+ import {IAccess} from "./IAccess.sol";
8
8
  import {IAccessAdmin} from "./IAccessAdmin.sol";
9
9
  import {IAuthorization} from "./IAuthorization.sol";
10
10
  import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {IServiceAuthorization} from "./IServiceAuthorization.sol";
11
12
 
12
13
  import {AccessAdminLib} from "./AccessAdminLib.sol";
13
14
  import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
15
+ import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
14
16
  import {ContractLib} from "../shared/ContractLib.sol";
15
17
  import {NftId, NftIdLib} from "../type/NftId.sol";
16
18
  import {ObjectType} from "../type/ObjectType.sol";
17
19
  import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
18
- import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
20
+ import {Selector, SelectorSetLib} from "../type/Selector.sol";
19
21
  import {Str, StrLib} from "../type/String.sol";
20
22
  import {TimestampLib} from "../type/Timestamp.sol";
21
23
  import {VersionPart} from "../type/Version.sol";
22
24
 
23
- interface IAccessManagedChecker {
24
- function authority() external view returns (address);
25
- }
26
25
 
27
26
  /**
28
27
  * @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
@@ -31,14 +30,10 @@ interface IAccessManagedChecker {
31
30
  */
32
31
  contract AccessAdmin is
33
32
  AccessManagedUpgradeable,
34
- ReentrancyGuardUpgradeable,
35
33
  IAccessAdmin
36
34
  {
37
35
  using EnumerableSet for EnumerableSet.AddressSet;
38
36
 
39
- string public constant ADMIN_ROLE_NAME = "AdminRole";
40
- string public constant PUBLIC_ROLE_NAME = "PublicRole";
41
-
42
37
  /// @dev admin name used for logging only
43
38
  string internal _adminName;
44
39
 
@@ -49,9 +44,9 @@ contract AccessAdmin is
49
44
  /// @dev the authorization contract used for initial access control
50
45
  IAuthorization internal _authorization;
51
46
 
52
- /// @dev stores the deployer address and allows to create initializers
53
- /// that are restricted to the deployer address.
54
- address internal _deployer;
47
+ // /// @dev stores the deployer address and allows to create initializers
48
+ // /// that are restricted to the deployer address.
49
+ // address internal _deployer;
55
50
 
56
51
  /// @dev the linked NFT ID
57
52
  NftId internal _linkedNftId;
@@ -65,6 +60,9 @@ contract AccessAdmin is
65
60
  /// @dev store array with all created roles
66
61
  RoleId [] internal _roleIds;
67
62
 
63
+ // @dev target type specific role id counters
64
+ mapping(TargetType => uint64) internal _nextRoleId;
65
+
68
66
  /// @dev store set of current role members for given role
69
67
  mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
70
68
 
@@ -86,58 +84,9 @@ contract AccessAdmin is
86
84
  /// @dev temporary dynamic functions array
87
85
  bytes4[] private _functions;
88
86
 
89
- modifier onlyDeployer() {
90
- // special case for cloned AccessAdmin contracts
91
- // IMPORTANT cloning and initialize authority needs to be done in a single transaction
92
- if (_deployer == address(0)) {
93
- _deployer = msg.sender;
94
- }
95
-
96
- if (msg.sender != _deployer) {
97
- revert ErrorAccessAdminNotDeployer();
98
- }
99
- _;
100
- }
101
-
102
- modifier onlyRoleMember(RoleId roleId, address account) {
103
- _checkRoleExists(roleId, false);
104
-
105
- if (!hasRole(account, roleId)) {
106
- revert ErrorAccessAdminNotRoleOwner(roleId, account);
107
- }
108
- _;
109
- }
110
-
111
- modifier onlyRoleAdmin(RoleId roleId, address account) {
112
- _checkRoleExists(roleId, false);
113
-
114
- if (!hasAdminRole(account, roleId)) {
115
- revert ErrorAccessAdminNotAdminOfRole(_roleInfo[roleId].adminRoleId, account);
116
- }
117
- _;
118
- }
119
-
120
- modifier onlyExistingRole(
121
- RoleId roleId,
122
- bool onlyActiveRole,
123
- bool allowLockedRoles
124
- )
125
- {
126
- if (!allowLockedRoles) {
127
- _checkRoleExists(roleId, onlyActiveRole);
128
- }
129
- _;
130
- }
131
-
132
- modifier onlyExistingTarget(address target) {
133
- _checkTargetExists(target);
134
- _;
135
- }
136
87
 
137
88
  //-------------- initialization functions ------------------------------//
138
89
 
139
- // event LogAccessAdminDebug(string message);
140
-
141
90
  /// @dev Initializes this admin with the provided accessManager (and authorization specification).
142
91
  /// Internally initializes access manager with this admin and creates basic role setup.
143
92
  function initialize(
@@ -151,25 +100,18 @@ contract AccessAdmin is
151
100
  }
152
101
 
153
102
 
103
+ /// @dev Initializes this admin with the provided accessManager and name.
104
+ /// IMPORTANT
105
+ /// - cloning of an access admin and initialization MUST be done in the same tx.
106
+ /// - this function as well as any completeSetup functions MUST be called in the same tx.
154
107
  function __AccessAdmin_init(
155
108
  address authority,
156
109
  string memory adminName
157
110
  )
158
111
  internal
159
112
  onlyInitializing()
160
- onlyDeployer()
161
113
  {
162
- // checks
163
- // check authority is contract
164
- if (!ContractLib.isContract(authority)) {
165
- revert ErrorAccessAdminAuthorityNotContract(authority);
166
- }
167
-
168
- // check name not empty
169
- if (bytes(adminName).length == 0) {
170
- revert ErrorAccessAdminAccessManagerEmptyName();
171
- }
172
-
114
+ AccessAdminLib.checkInitParameters(authority, adminName);
173
115
  _authority = AccessManagerCloneable(authority);
174
116
  _authority.initialize(address(this));
175
117
 
@@ -189,10 +131,22 @@ contract AccessAdmin is
189
131
  // set initial linked NFT ID to zero
190
132
  _linkedNftId = NftIdLib.zero();
191
133
 
192
- // create admin and public roles
193
- _initializeAdminAndPublicRoles();
134
+ // setup admin role
135
+ _createRoleUnchecked(
136
+ ADMIN_ROLE(), AccessAdminLib.adminRoleInfo());
137
+
138
+ // add this contract as admin role member, as contract roles cannot be revoked
139
+ // and max member count is 1 for admin role this access admin contract will
140
+ // always be the only admin of the access manager.
141
+ _roleMembers[
142
+ RoleIdLib.toRoleId(_authority.ADMIN_ROLE())].add(address(this));
143
+
144
+ // setup public role
145
+ _createRoleUnchecked(
146
+ PUBLIC_ROLE(), AccessAdminLib.publicRoleInfo());
194
147
  }
195
148
 
149
+ //--- view functions for access admin ---------------------------------------//
196
150
 
197
151
  function getRelease() public view virtual returns (VersionPart release) {
198
152
  return _authority.getRelease();
@@ -209,11 +163,6 @@ contract AccessAdmin is
209
163
  }
210
164
 
211
165
 
212
- function getLinkedOwner() external view returns (address linkedOwner) {
213
- return getRegistry().ownerOf(_linkedNftId);
214
- }
215
-
216
-
217
166
  function getAuthorization() public view returns (IAuthorization authorization) {
218
167
  return _authorization;
219
168
  }
@@ -242,17 +191,30 @@ contract AccessAdmin is
242
191
  }
243
192
 
244
193
  function roleExists(RoleId roleId) public view returns (bool exists) {
245
- return _roleInfo[roleId].createdAt.gtz();
194
+ return _roleInfo[roleId].targetType != TargetType.Undefined;
246
195
  }
247
196
 
248
- function getRoleForName(string memory name) external view returns (RoleId roleId) {
249
- return _roleForName[StrLib.toStr(name)].roleId;
197
+ function getRoleForName(string memory name) public view returns (RoleId roleId, bool exists) {
198
+ roleId = _roleForName[StrLib.toStr(name)].roleId;
199
+ exists = false;
200
+
201
+ if (roleId.gtz() || AccessAdminLib.isAdminRoleName(name)) {
202
+ exists = true;
203
+ }
250
204
  }
251
205
 
252
- function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory) {
206
+ function getRoleInfo(RoleId roleId) public view returns (RoleInfo memory) {
253
207
  return _roleInfo[roleId];
254
208
  }
255
209
 
210
+ function isRoleActive(RoleId roleId) external view returns (bool isActive) {
211
+ return _roleInfo[roleId].pausedAt > TimestampLib.current();
212
+ }
213
+
214
+ function isRoleCustom(RoleId roleId) external view returns (bool isActive) {
215
+ return _roleInfo[roleId].targetType == TargetType.Custom;
216
+ }
217
+
256
218
  function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
257
219
  return _roleMembers[roleId].length();
258
220
  }
@@ -261,21 +223,15 @@ contract AccessAdmin is
261
223
  return _roleMembers[roleId].at(idx);
262
224
  }
263
225
 
264
- // TODO false because not role member or because role not exists?
265
- function hasRole(address account, RoleId roleId) public view returns (bool) {
226
+ function isRoleMember(RoleId roleId, address account) public view returns (bool) {
266
227
  (bool isMember, ) = _authority.hasRole(
267
228
  RoleId.unwrap(roleId),
268
229
  account);
269
230
  return isMember;
270
231
  }
271
232
 
272
- function hasAdminRole(address account, RoleId roleId)
273
- public
274
- virtual
275
- view
276
- returns (bool)
277
- {
278
- return hasRole(account, _roleInfo[roleId].adminRoleId);
233
+ function isRoleAdmin(RoleId roleId, address account) public virtual view returns (bool) {
234
+ return isRoleMember(_roleInfo[roleId].adminRoleId, account);
279
235
  }
280
236
 
281
237
  //--- view functions for targets ----------------------------------------//
@@ -292,7 +248,7 @@ contract AccessAdmin is
292
248
  return _targets[idx];
293
249
  }
294
250
 
295
- function getTargetInfo(address target) external view returns (TargetInfo memory targetInfo) {
251
+ function getTargetInfo(address target) public view returns (TargetInfo memory targetInfo) {
296
252
  return _targetInfo[target];
297
253
  }
298
254
 
@@ -301,9 +257,11 @@ contract AccessAdmin is
301
257
  }
302
258
 
303
259
  function isTargetLocked(address target) public view returns (bool locked) {
304
- return _authority.isTargetClosed(target);
260
+ return _authority.isLocked() || _authority.isTargetClosed(target);
305
261
  }
306
262
 
263
+ //--- view functions for target functions -------------------------------//
264
+
307
265
  function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
308
266
  return SelectorSetLib.size(_targetFunctions[target]);
309
267
  }
@@ -327,8 +285,13 @@ contract AccessAdmin is
327
285
  selector.toBytes4()));
328
286
  }
329
287
 
330
- function deployer() public view returns (address) {
331
- return _deployer;
288
+
289
+ function getFunctionInfo(address target, Selector selector)
290
+ external
291
+ view
292
+ returns (FunctionInfo memory functionInfo)
293
+ {
294
+ return _functionInfo[target][selector];
332
295
  }
333
296
 
334
297
  //--- internal/private functions -------------------------------------------------//
@@ -341,161 +304,98 @@ contract AccessAdmin is
341
304
  _linkedNftId = getRegistry().getNftIdForAddress(registerable);
342
305
  }
343
306
 
344
- function _initializeAdminAndPublicRoles()
345
- internal
346
- virtual
347
- onlyInitializing()
348
- {
349
- RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
350
307
 
351
- // setup admin role
352
- _createRoleUnchecked(
353
- ADMIN_ROLE(),
354
- AccessAdminLib.toRole({
355
- adminRoleId: ADMIN_ROLE(),
356
- roleType: RoleType.Contract,
357
- maxMemberCount: 1,
358
- name: ADMIN_ROLE_NAME}));
359
-
360
- // add this contract as admin role member
361
- _roleMembers[adminRoleId].add(address(this));
362
-
363
- // setup public role
364
- _createRoleUnchecked(
365
- PUBLIC_ROLE(),
366
- AccessAdminLib.toRole({
367
- adminRoleId: ADMIN_ROLE(),
368
- roleType: RoleType.Gif,
369
- maxMemberCount: type(uint32).max,
370
- name: PUBLIC_ROLE_NAME}));
371
- }
372
-
373
- function _createTargetWithRole(
374
- address target,
375
- string memory targetName,
376
- RoleId targetRoleId
308
+ function _createRoles(
309
+ IServiceAuthorization authorization
377
310
  )
378
311
  internal
379
312
  {
380
- _createTarget(target, targetName, true, false);
381
- _grantRoleToAccount(targetRoleId, target);
313
+ RoleId[] memory roles = authorization.getRoles();
314
+
315
+ for(uint256 i = 0; i < roles.length; i++) {
316
+ RoleId authzRoleId = roles[i];
317
+ IAccess.RoleInfo memory roleInfo = authorization.getRoleInfo(authzRoleId);
318
+ (RoleId roleId, bool exists) = getRoleForName(roleInfo.name.toString());
319
+
320
+ if (!exists) {
321
+ if (!AccessAdminLib.isDynamicRoleId(authzRoleId)) {
322
+ roleId = authzRoleId;
323
+ }
324
+
325
+ _createRole(
326
+ roleId,
327
+ roleInfo,
328
+ true);
329
+ }
330
+ }
382
331
  }
383
332
 
384
- function _authorizeTargetFunctions(
385
- address target,
333
+
334
+ /// @dev Creates a role based on the provided parameters.
335
+ /// Checks that the provided role and role id and role name not already used.
336
+ function _createRole(
386
337
  RoleId roleId,
387
- FunctionInfo[] memory functions
338
+ RoleInfo memory info,
339
+ bool revertOnExistingRole
388
340
  )
389
341
  internal
390
342
  {
391
- if (roleId == getAdminRole()) {
392
- revert ErrorAccessAdminAuthorizeForAdminRoleInvalid(target);
343
+ bool isAdminOrPublicRole = AccessAdminLib.checkRoleCreation(this, roleId, info, revertOnExistingRole);
344
+ if (!isAdminOrPublicRole) {
345
+ _createRoleUnchecked(roleId, info);
393
346
  }
394
-
395
- (
396
- bytes4[] memory functionSelectors,
397
- string[] memory functionNames
398
- ) = _processFunctionSelectors(target, functions, true);
399
-
400
- // apply authz via access manager
401
- _grantRoleAccessToFunctions(
402
- target,
403
- roleId,
404
- functionSelectors,
405
- functionNames,
406
- false); // allow locked roles
407
347
  }
408
348
 
409
- function _unauthorizeTargetFunctions(
410
- address target,
411
- FunctionInfo[] memory functions
349
+
350
+ function _createRoleUnchecked(
351
+ RoleId roleId,
352
+ RoleInfo memory info
412
353
  )
413
- internal
354
+ private
414
355
  {
415
- (
416
- bytes4[] memory functionSelectors,
417
- string[] memory functionNames
418
- ) = _processFunctionSelectors(target, functions, false);
356
+ // create role info
357
+ info.createdAt = TimestampLib.current();
358
+ info.pausedAt = TimestampLib.max();
359
+ _roleInfo[roleId] = info;
419
360
 
420
- _grantRoleAccessToFunctions(
421
- target,
422
- getAdminRole(),
423
- functionSelectors,
424
- functionNames,
425
- true); // allowLockedRoles
426
- }
361
+ // create role name info
362
+ _roleForName[info.name] = RoleNameInfo({
363
+ roleId: roleId,
364
+ exists: true});
427
365
 
428
- function _processFunctionSelectors(
429
- address target,
430
- FunctionInfo[] memory functions,
431
- bool addFunctions
432
- )
433
- internal
434
- onlyExistingTarget(target)
435
- returns (
436
- bytes4[] memory functionSelectors,
437
- string[] memory functionNames
438
- )
439
- {
440
- uint256 n = functions.length;
441
- functionSelectors = new bytes4[](n);
442
- functionNames = new string[](n);
443
- FunctionInfo memory func;
444
- Selector selector;
445
-
446
- for (uint256 i = 0; i < n; i++) {
447
- func = functions[i];
448
- selector = func.selector;
449
-
450
- // add function selector to target selector set if not in set
451
- if (addFunctions) { SelectorSetLib.add(_targetFunctions[target], selector); }
452
- else { SelectorSetLib.remove(_targetFunctions[target], selector); }
453
-
454
- // set function name
455
- _functionInfo[target][selector] = func;
456
-
457
- // add bytes4 selector to function selector array
458
- functionSelectors[i] = selector.toBytes4();
459
- functionNames[i] = func.name.toString();
460
- }
366
+ // add role to list of roles
367
+ _roleIds.push(roleId);
368
+
369
+ emit LogAccessAdminRoleCreated(_adminName, roleId, info.targetType, info.adminRoleId, info.name.toString());
461
370
  }
462
371
 
463
- /// @dev grant the specified role access to all functions in the provided selector list
464
- function _grantRoleAccessToFunctions(
465
- address target,
466
- RoleId roleId,
467
- bytes4[] memory functionSelectors,
468
- string[] memory functionNames,
469
- bool allowLockedRoles // admin and public roles are locked
470
- )
372
+
373
+ /// @dev Activates or deactivates role.
374
+ /// The role activ property is indirectly controlled over the pausedAt timestamp.
375
+ function _setRoleActive(RoleId roleId, bool active)
471
376
  internal
472
- onlyExistingTarget(target)
473
- onlyExistingRole(roleId, true, allowLockedRoles)
474
377
  {
378
+ AccessAdminLib.checkRoleExists(this, roleId, false, false);
475
379
 
476
- _authority.setTargetFunctionRole(
477
- target,
478
- functionSelectors,
479
- RoleId.unwrap(roleId));
480
-
481
- // log function grantings
482
- for (uint256 i = 0; i < functionSelectors.length; i++) {
483
- emit LogAccessAdminFunctionGranted(
484
- _adminName,
485
- target,
486
- string(abi.encodePacked(
487
- functionNames[i],
488
- "(): ",
489
- _getRoleName(roleId))));
380
+ if (active) {
381
+ _roleInfo[roleId].pausedAt = TimestampLib.max();
382
+ } else {
383
+ _roleInfo[roleId].pausedAt = TimestampLib.current();
490
384
  }
385
+
386
+ Blocknumber lastUpdateIn = _roleInfo[roleId].lastUpdateIn;
387
+ _roleInfo[roleId].lastUpdateIn = BlocknumberLib.current();
388
+
389
+ emit LogAccessAdminRoleActivatedSet(_adminName, roleId, active, lastUpdateIn);
491
390
  }
492
391
 
493
392
 
494
393
  /// @dev grant the specified role to the provided account
495
394
  function _grantRoleToAccount(RoleId roleId, address account)
496
395
  internal
497
- onlyExistingRole(roleId, true, false)
498
396
  {
397
+ AccessAdminLib.checkRoleExists(this, roleId, true, false);
398
+
499
399
  // check max role members will not be exceeded
500
400
  if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
501
401
  revert ErrorAccessAdminRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
@@ -503,34 +403,38 @@ contract AccessAdmin is
503
403
 
504
404
  // check account is contract for contract role
505
405
  if (
506
- _roleInfo[roleId].roleType == RoleType.Contract &&
406
+ _roleInfo[roleId].targetType != TargetType.Custom &&
507
407
  !ContractLib.isContract(account) // will fail in account's constructor
508
408
  ) {
509
409
  revert ErrorAccessAdminRoleMemberNotContract(roleId, account);
510
410
  }
511
411
 
512
- // TODO check account already have roleId
412
+ // effects
513
413
  _roleMembers[roleId].add(account);
514
414
  _authority.grantRole(
515
415
  RoleId.unwrap(roleId),
516
416
  account,
517
417
  0);
518
418
 
519
- emit LogAccessAdminRoleGranted(_adminName, account, _getRoleName(roleId));
419
+ emit LogAccessAdminRoleGranted(
420
+ _adminName,
421
+ account,
422
+ AccessAdminLib.getRoleName(this, roleId));
520
423
  }
521
424
 
425
+
522
426
  /// @dev revoke the specified role from the provided account
523
427
  function _revokeRoleFromAccount(RoleId roleId, address account)
524
428
  internal
525
- onlyExistingRole(roleId, false, false)
526
429
  {
430
+ AccessAdminLib.checkRoleExists(this, roleId, false, false);
527
431
 
528
- // check role removal is permitted
529
- if (_roleInfo[roleId].roleType == RoleType.Contract) {
432
+ // check for attempt to revoke contract role
433
+ if (_roleInfo[roleId].targetType != TargetType.Custom) {
530
434
  revert ErrorAccessAdminRoleMemberRemovalDisabled(roleId, account);
531
435
  }
532
436
 
533
- // TODO check account have roleId?
437
+ // effects
534
438
  _roleMembers[roleId].remove(account);
535
439
  _authority.revokeRole(
536
440
  RoleId.unwrap(roleId),
@@ -540,165 +444,236 @@ contract AccessAdmin is
540
444
  }
541
445
 
542
446
 
543
- /// @dev Creates a role based on the provided parameters.
544
- /// Checks that the provided role and role id and role name not already used.
545
- function _createRole(
546
- RoleId roleId,
547
- RoleInfo memory info
447
+ function _getOrCreateTargetRoleIdAndName(
448
+ address target,
449
+ string memory targetName,
450
+ TargetType targetType
548
451
  )
549
452
  internal
453
+ returns (
454
+ RoleId roleId,
455
+ string memory roleName,
456
+ bool exists
457
+ )
550
458
  {
551
- AccessAdminLib.checkRoleCreation(this, roleId, info);
552
- _createRoleUnchecked(roleId, info);
459
+ roleName = AccessAdminLib.toRoleName(targetName);
460
+ (roleId, exists) = getRoleForName(roleName);
461
+
462
+ if (exists) {
463
+ return (roleId, roleName, true);
464
+ }
465
+
466
+ // get roleId
467
+ if (targetType == TargetType.Service || targetType == TargetType.GenericService) {
468
+ roleId = AccessAdminLib.getServiceRoleId(target, targetType);
469
+ } else {
470
+ uint64 nextRoleId = _nextRoleId[targetType];
471
+ roleId = AccessAdminLib.getTargetRoleId(target, targetType, nextRoleId);
472
+
473
+ // increment target type specific role id counter
474
+ _nextRoleId[targetType]++;
475
+ }
553
476
  }
554
477
 
555
478
 
556
479
  function _createTarget(
557
480
  address target,
558
481
  string memory targetName,
559
- bool checkAuthority,
560
- bool custom
482
+ TargetType targetType,
483
+ bool checkAuthority
561
484
  )
562
485
  internal
486
+ returns (RoleId contractRoleId)
563
487
  {
488
+ // checks
564
489
  AccessAdminLib.checkTargetCreation(this, target, targetName, checkAuthority);
565
- _createTargetUnchecked(target, targetName, custom);
566
- }
567
-
568
490
 
569
- function _createRoleUnchecked(
570
- RoleId roleId,
571
- RoleInfo memory info
572
- )
573
- private
574
- {
575
- // create role info
576
- info.createdAt = TimestampLib.blockTimestamp();
577
- _roleInfo[roleId] = info;
578
-
579
- // create role name info
580
- _roleForName[info.name] = RoleNameInfo({
581
- roleId: roleId,
582
- exists: true});
583
-
584
- // add role to list of roles
585
- _roleIds.push(roleId);
491
+ // effects
492
+ contractRoleId = _createTargetUnchecked(
493
+ target,
494
+ targetName,
495
+ targetType,
496
+ checkAuthority);
586
497
 
587
- emit LogAccessAdminRoleCreated(_adminName, roleId, info.roleType, info.adminRoleId, info.name.toString());
498
+ // deal with token handler, if applicable
499
+ (
500
+ address tokenHandler,
501
+ string memory tokenHandlerName
502
+ ) = AccessAdminLib.getTokenHandler(target, targetName, targetType);
503
+
504
+ if (tokenHandler != address(0)) {
505
+ _createTargetUnchecked(
506
+ tokenHandler,
507
+ tokenHandlerName,
508
+ targetType,
509
+ checkAuthority);
510
+ }
588
511
  }
589
512
 
590
513
 
514
+ /// @dev Creates a new target and a corresponding contract role.
515
+ /// The function assigns the role to the target and logs the creation.
591
516
  function _createTargetUnchecked(
592
517
  address target,
593
518
  string memory targetName,
594
- bool custom
519
+ TargetType targetType,
520
+ bool managed
595
521
  )
596
522
  internal
523
+ returns (RoleId targetRoleId)
597
524
  {
525
+ // create target role (if not existing)
526
+ string memory roleName;
527
+ bool roleExists;
528
+ (targetRoleId, roleName, roleExists) = _getOrCreateTargetRoleIdAndName(target, targetName, targetType);
529
+
530
+ if (!roleExists) {
531
+ _createRole(
532
+ targetRoleId,
533
+ AccessAdminLib.roleInfo(
534
+ ADMIN_ROLE(),
535
+ targetType,
536
+ 1,
537
+ roleName),
538
+ true); // revert on existing role
539
+ }
540
+
598
541
  // create target info
599
542
  Str name = StrLib.toStr(targetName);
600
543
  _targetInfo[target] = TargetInfo({
601
544
  name: name,
602
- isCustom: custom,
603
- createdAt: TimestampLib.blockTimestamp()
604
- });
545
+ targetType: targetType,
546
+ roleId: targetRoleId,
547
+ createdAt: TimestampLib.current(),
548
+ lastUpdateIn: BlocknumberLib.current()});
605
549
 
606
550
  // create name to target mapping
607
551
  _targetForName[name] = target;
608
552
 
609
- // add role to list of roles
553
+ // add target to list of targets
610
554
  _targets.push(target);
611
555
 
612
- emit LogAccessAdminTargetCreated(_adminName, target, targetName);
556
+ // grant contract role to target
557
+ _grantRoleToAccount(targetRoleId, target);
558
+
559
+ emit LogAccessAdminTargetCreated(_adminName, targetName, managed, target, targetRoleId);
613
560
  }
614
561
 
615
562
 
616
563
  function _setTargetLocked(address target, bool locked)
617
564
  internal
618
- onlyExistingTarget(target)
619
565
  {
566
+ AccessAdminLib.checkTargetExists(this, target);
620
567
  _authority.setTargetClosed(target, locked);
621
- }
622
568
 
569
+ // logging
570
+ Blocknumber lastUpdateIn = _targetInfo[target].lastUpdateIn;
571
+ _targetInfo[target].lastUpdateIn = BlocknumberLib.current();
623
572
 
624
- function _getRoleName(RoleId roleId) internal view returns (string memory) {
625
- if (roleExists(roleId)) {
626
- return _roleInfo[roleId].name.toString();
627
- }
628
- return "<unknown-role>";
573
+ emit LogAccessAdminTargetLockedSet(_adminName, target, locked, lastUpdateIn);
629
574
  }
630
575
 
631
576
 
632
- function _checkAuthorization(
633
- address authorization,
634
- ObjectType expectedDomain,
635
- VersionPart expectedRelease,
636
- bool checkAlreadyInitialized
637
- )
577
+ /// @dev Authorize the functions of the target for the specified role.
578
+ function _authorizeFunctions(IAuthorization authorization, Str target, RoleId roleId)
638
579
  internal
639
- view
640
580
  {
641
- AccessAdminLib.checkAuthorization(
642
- address(_authorization),
643
- authorization,
644
- expectedDomain,
645
- expectedRelease,
646
- checkAlreadyInitialized);
581
+ _authorizeTargetFunctions(
582
+ getTargetForName(target),
583
+ AccessAdminLib.getAuthorizedRole(
584
+ this,
585
+ authorization,
586
+ roleId),
587
+ authorization.getAuthorizedFunctions(
588
+ target,
589
+ roleId),
590
+ false,
591
+ true);
647
592
  }
648
593
 
649
594
 
650
- function _checkRoleExists(
595
+ /// @dev Authorize the functions of the target for the specified role.
596
+ /// Flag addFunctions determines if functions are added or removed.
597
+ function _authorizeTargetFunctions(
598
+ address target,
651
599
  RoleId roleId,
652
- bool onlyActiveRole
600
+ FunctionInfo[] memory functions,
601
+ bool onlyComponentOrContractTargets,
602
+ bool addFunctions
653
603
  )
654
604
  internal
655
- view
656
605
  {
657
- if (!roleExists(roleId)) {
658
- revert ErrorAccessAdminRoleUnknown(roleId);
659
- }
606
+ // checks
607
+ AccessAdminLib.checkTargetAndRoleForFunctions(
608
+ this,
609
+ target,
610
+ roleId,
611
+ onlyComponentOrContractTargets);
660
612
 
661
- uint64 roleIdInt = RoleId.unwrap(roleId);
662
- if (roleIdInt == _authority.ADMIN_ROLE()) {
663
- revert ErrorAccessAdminRoleIsLocked(roleId);
613
+ if (addFunctions && roleId == getAdminRole()) {
614
+ revert ErrorAccessAdminAuthorizeForAdminRoleInvalid(target);
664
615
  }
665
616
 
666
- // check if role is disabled
667
- if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.blockTimestamp()) {
668
- revert ErrorAccessAdminRoleIsPaused(roleId);
617
+ _authority.setTargetFunctionRole(
618
+ target,
619
+ AccessAdminLib.getSelectors(functions),
620
+ RoleId.unwrap(roleId));
621
+
622
+ // update function set and log function grantings
623
+ for (uint256 i = 0; i < functions.length; i++) {
624
+ _updateFunctionAccess(
625
+ target,
626
+ roleId,
627
+ functions[i],
628
+ addFunctions);
669
629
  }
670
630
  }
671
631
 
672
632
 
673
-
674
- /// @dev check if target exists and reverts if it doesn't
675
- function _checkTargetExists(
676
- address target
633
+ function _updateFunctionAccess(
634
+ address target,
635
+ RoleId roleId,
636
+ FunctionInfo memory func,
637
+ bool addFunction
677
638
  )
678
639
  internal
679
- view
680
640
  {
681
- // check not yet created
682
- if (!targetExists(target)) {
683
- revert ErrorAccessAdminTargetNotCreated(target);
684
- }
641
+ // update functions info
642
+ Selector selector = func.selector;
643
+ Blocknumber lastUpdateIn = _functionInfo[target][selector].lastUpdateIn;
644
+
645
+ // update function sets
646
+ if (addFunction) { SelectorSetLib.add(_targetFunctions[target], selector); }
647
+ else { SelectorSetLib.remove(_targetFunctions[target], selector); }
648
+
649
+ _functionInfo[target][selector] = func;
650
+ _functionInfo[target][selector].lastUpdateIn = BlocknumberLib.current();
651
+
652
+ // logging
653
+ emit LogAccessAdminFunctionGranted(
654
+ _adminName,
655
+ target,
656
+ AccessAdminLib.toFunctionGrantingString(this, func.name, roleId),
657
+ lastUpdateIn);
685
658
  }
686
659
 
687
660
 
688
- function _checkIsRegistered(
689
- address registry,
690
- address target,
691
- ObjectType expectedType
661
+ function _checkAuthorization(
662
+ address authorization,
663
+ ObjectType expectedDomain,
664
+ VersionPart expectedRelease,
665
+ bool expectServiceAuthorization,
666
+ bool checkAlreadyInitialized
692
667
  )
693
668
  internal
694
669
  view
695
670
  {
696
- AccessAdminLib.checkIsRegistered(registry, target, expectedType);
697
- }
698
-
699
- function _checkRegistry(address registry) internal view {
700
- if (!ContractLib.isRegistry(registry)) {
701
- revert ErrorAccessAdminNotRegistry(registry);
702
- }
671
+ AccessAdminLib.checkAuthorization(
672
+ address(_authorization),
673
+ authorization,
674
+ expectedDomain,
675
+ expectedRelease,
676
+ expectServiceAuthorization,
677
+ checkAlreadyInitialized);
703
678
  }
704
679
  }