@etherisc/gif-next 0.0.2-ffa91a6-022 → 3.0.0-06d5e8b-738

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 (504) hide show
  1. package/README.md +124 -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 +370 -141
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1582 -202
  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 +728 -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 +1234 -0
  55. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +896 -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 +2497 -0
  63. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +891 -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 +753 -401
  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 +747 -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 +539 -314
  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 +551 -246
  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 +169 -111
  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/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
  245. package/artifacts/contracts/shared/{ComponentVerifyingService.sol/ComponentVerifyingService.json → IAuthorizedComponent.sol/IAuthorizedComponent.json} +238 -90
  246. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -10
  248. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +111 -132
  250. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -10
  252. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  253. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  254. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  255. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  256. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  257. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
  258. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  259. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  260. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  261. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  262. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  263. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -10
  264. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  265. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  266. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  267. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  268. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  269. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  270. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  271. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  272. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
  273. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  274. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  275. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  276. package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
  277. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  278. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  279. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  280. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
  281. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  282. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  283. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  284. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1390 -134
  285. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  286. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +97 -117
  287. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  288. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  289. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  290. package/artifacts/contracts/staking/Staking.sol/Staking.json +1479 -192
  291. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  292. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +77 -76
  293. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  294. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +139 -64
  295. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  296. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +296 -152
  297. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  298. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +131 -167
  299. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  300. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +96 -46
  301. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  302. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1615 -815
  303. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  304. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  305. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  306. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +153 -91
  307. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  308. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Amount.sol/AmountLib.json +10 -10
  310. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  312. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  314. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  316. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  318. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
  320. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  322. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  323. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  324. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  326. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  327. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  328. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +22 -25
  330. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  332. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  334. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  336. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  337. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  338. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  340. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
  342. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +64 -2
  344. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  346. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  348. package/artifacts/contracts/type/String.sol/StrLib.json +69 -2
  349. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  350. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
  351. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  352. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
  353. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  354. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  355. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  356. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  357. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  358. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
  359. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  360. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  361. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  362. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  363. package/contracts/accounting/AccountingService.sol +15 -3
  364. package/contracts/accounting/IAccountingService.sol +4 -2
  365. package/contracts/authorization/AccessAdmin.sol +303 -326
  366. package/contracts/authorization/AccessAdminLib.sol +535 -23
  367. package/contracts/authorization/AccessManagerCloneable.sol +0 -18
  368. package/contracts/authorization/Authorization.sol +64 -239
  369. package/contracts/authorization/IAccess.sol +29 -12
  370. package/contracts/authorization/IAccessAdmin.sol +25 -53
  371. package/contracts/authorization/IAuthorization.sol +3 -57
  372. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  373. package/contracts/authorization/ServiceAuthorization.sol +228 -34
  374. package/contracts/distribution/BasicDistribution.sol +3 -4
  375. package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
  376. package/contracts/distribution/Distribution.sol +9 -8
  377. package/contracts/distribution/DistributionService.sol +125 -62
  378. package/contracts/distribution/IDistributionComponent.sol +3 -1
  379. package/contracts/distribution/IDistributionService.sol +20 -8
  380. package/contracts/examples/fire/FireProduct.sol +6 -6
  381. package/contracts/examples/flight/FlightLib.sol +300 -0
  382. package/contracts/examples/flight/FlightMessageVerifier.sol +128 -0
  383. package/contracts/examples/flight/FlightOracle.sol +171 -0
  384. package/contracts/examples/flight/FlightOracleAuthorization.sol +53 -0
  385. package/contracts/examples/flight/FlightPool.sol +89 -0
  386. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  387. package/contracts/examples/flight/FlightProduct.sol +685 -0
  388. package/contracts/examples/flight/FlightProductAuthorization.sol +69 -0
  389. package/contracts/examples/flight/FlightUSD.sol +28 -0
  390. package/contracts/examples/flight/originalV1.sol +396 -0
  391. package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -19
  392. package/contracts/instance/BaseStore.sol +93 -0
  393. package/contracts/instance/IBaseStore.sol +37 -0
  394. package/contracts/instance/IInstance.sol +57 -6
  395. package/contracts/instance/IInstanceService.sol +42 -7
  396. package/contracts/instance/Instance.sol +111 -56
  397. package/contracts/instance/InstanceAdmin.sol +150 -294
  398. package/contracts/instance/InstanceAuthorizationV3.sol +106 -66
  399. package/contracts/instance/InstanceReader.sol +376 -392
  400. package/contracts/instance/InstanceService.sol +186 -134
  401. package/contracts/instance/InstanceStore.sol +153 -128
  402. package/contracts/instance/ProductStore.sol +290 -0
  403. package/contracts/instance/RiskSet.sol +10 -2
  404. package/contracts/instance/TargetNames.sol +10 -0
  405. package/contracts/instance/base/BalanceStore.sol +4 -6
  406. package/contracts/instance/base/ObjectLifecycle.sol +2 -6
  407. package/contracts/instance/module/IBundle.sol +6 -5
  408. package/contracts/instance/module/IComponents.sol +15 -5
  409. package/contracts/instance/module/IDistribution.sol +17 -7
  410. package/contracts/instance/module/IPolicy.sol +28 -8
  411. package/contracts/instance/module/IRisk.sol +2 -0
  412. package/contracts/oracle/BasicOracle.sol +2 -3
  413. package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
  414. package/contracts/oracle/IOracle.sol +9 -4
  415. package/contracts/oracle/IOracleService.sol +12 -12
  416. package/contracts/oracle/Oracle.sol +4 -6
  417. package/contracts/oracle/OracleService.sol +8 -8
  418. package/contracts/pool/BasicPool.sol +4 -16
  419. package/contracts/pool/BasicPoolAuthorization.sol +10 -5
  420. package/contracts/pool/BundleService.sol +34 -43
  421. package/contracts/pool/IBundleService.sol +14 -13
  422. package/contracts/pool/IPoolService.sol +7 -2
  423. package/contracts/pool/Pool.sol +6 -18
  424. package/contracts/pool/PoolLib.sol +127 -2
  425. package/contracts/pool/PoolService.sol +40 -181
  426. package/contracts/product/ApplicationService.sol +64 -11
  427. package/contracts/product/BasicProduct.sol +2 -3
  428. package/contracts/product/BasicProductAuthorization.sol +13 -5
  429. package/contracts/product/ClaimService.sol +99 -105
  430. package/contracts/product/IApplicationService.sol +21 -2
  431. package/contracts/product/IClaimService.sol +5 -4
  432. package/contracts/product/IPolicyService.sol +9 -2
  433. package/contracts/product/IRiskService.sol +18 -3
  434. package/contracts/product/PolicyService.sol +40 -59
  435. package/contracts/product/PolicyServiceLib.sol +79 -5
  436. package/contracts/product/PricingService.sol +28 -31
  437. package/contracts/product/Product.sol +40 -16
  438. package/contracts/product/RiskService.sol +50 -15
  439. package/contracts/registry/IRegistry.sol +15 -9
  440. package/contracts/registry/IRelease.sol +6 -3
  441. package/contracts/registry/Registry.sol +15 -9
  442. package/contracts/registry/RegistryAdmin.sol +39 -118
  443. package/contracts/registry/RegistryAuthorization.sol +139 -69
  444. package/contracts/registry/RegistryService.sol +1 -1
  445. package/contracts/registry/ReleaseAdmin.sol +59 -106
  446. package/contracts/registry/ReleaseRegistry.sol +20 -12
  447. package/contracts/registry/ServiceAuthorizationV3.sol +43 -32
  448. package/contracts/registry/TokenRegistry.sol +56 -52
  449. package/contracts/shared/Component.sol +8 -8
  450. package/contracts/shared/ComponentService.sol +245 -262
  451. package/contracts/shared/ContractLib.sol +106 -75
  452. package/contracts/shared/EcdsaChecker.sol +5 -0
  453. package/contracts/shared/IAuthorizedComponent.sol +15 -0
  454. package/contracts/shared/IComponent.sol +1 -1
  455. package/contracts/shared/IComponentService.sol +14 -15
  456. package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
  457. package/contracts/shared/INftOwnable.sol +2 -0
  458. package/contracts/shared/IRegisterable.sol +0 -1
  459. package/contracts/shared/InstanceLinkedComponent.sol +64 -26
  460. package/contracts/shared/NftOwnable.sol +3 -1
  461. package/contracts/shared/PolicyHolder.sol +3 -2
  462. package/contracts/shared/Service.sol +6 -4
  463. package/contracts/staking/IStaking.sol +261 -70
  464. package/contracts/staking/IStakingService.sol +39 -84
  465. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  466. package/contracts/staking/Staking.sol +468 -217
  467. package/contracts/staking/StakingLib.sol +38 -124
  468. package/contracts/staking/StakingManager.sol +4 -3
  469. package/contracts/staking/StakingReader.sol +62 -71
  470. package/contracts/staking/StakingService.sol +42 -185
  471. package/contracts/staking/StakingServiceManager.sol +1 -0
  472. package/contracts/staking/StakingStore.sol +1093 -331
  473. package/contracts/staking/TargetHandler.sol +132 -0
  474. package/contracts/staking/TargetManagerLib.sol +69 -46
  475. package/contracts/type/Amount.sol +4 -0
  476. package/contracts/type/Blocknumber.sol +17 -22
  477. package/contracts/type/ChainId.sol +101 -0
  478. package/contracts/type/Fee.sol +8 -8
  479. package/contracts/type/NftId.sol +3 -3
  480. package/contracts/type/ObjectType.sol +17 -33
  481. package/contracts/type/Referral.sol +6 -0
  482. package/contracts/type/RequestIdSet.sol +62 -0
  483. package/contracts/type/RoleId.sol +57 -59
  484. package/contracts/type/Seconds.sol +23 -0
  485. package/contracts/type/String.sol +42 -0
  486. package/contracts/type/Timestamp.sol +14 -3
  487. package/contracts/type/UFixed.sol +28 -10
  488. package/contracts/upgradeability/IVersionable.sol +3 -0
  489. package/contracts/upgradeability/ProxyManager.sol +26 -12
  490. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  491. package/contracts/upgradeability/Versionable.sol +6 -3
  492. package/package.json +2 -1
  493. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  494. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
  495. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  496. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  497. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  498. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
  499. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  500. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  501. package/contracts/shared/ComponentVerifyingService.sol +0 -128
  502. package/contracts/shared/IKeyValueStore.sol +0 -54
  503. package/contracts/shared/KeyValueStore.sol +0 -131
  504. 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
  }
@@ -321,14 +279,20 @@ contract AccessAdmin is
321
279
  {
322
280
  Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
323
281
  func = _functionInfo[target][selector];
324
- roleId = RoleIdLib.toRoleId(
325
- _authority.getTargetFunctionRole(
326
- target,
327
- selector.toBytes4()));
282
+ roleId = AccessAdminLib.getFunctionRoleId(_authority, target, selector);
283
+ // roleId = RoleIdLib.toRoleId(
284
+ // _authority.getTargetFunctionRole(
285
+ // target,
286
+ // selector.toBytes4()));
328
287
  }
329
288
 
330
- function deployer() public view returns (address) {
331
- return _deployer;
289
+
290
+ function getFunctionInfo(address target, Selector selector)
291
+ external
292
+ view
293
+ returns (FunctionInfo memory functionInfo)
294
+ {
295
+ return _functionInfo[target][selector];
332
296
  }
333
297
 
334
298
  //--- internal/private functions -------------------------------------------------//
@@ -341,161 +305,98 @@ contract AccessAdmin is
341
305
  _linkedNftId = getRegistry().getNftIdForAddress(registerable);
342
306
  }
343
307
 
344
- function _initializeAdminAndPublicRoles()
345
- internal
346
- virtual
347
- onlyInitializing()
348
- {
349
- RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
350
-
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
308
 
373
- function _createTargetWithRole(
374
- address target,
375
- string memory targetName,
376
- RoleId targetRoleId
309
+ function _createRoles(
310
+ IServiceAuthorization authorization
377
311
  )
378
312
  internal
379
313
  {
380
- _createTarget(target, targetName, true, false);
381
- _grantRoleToAccount(targetRoleId, target);
314
+ RoleId[] memory roles = authorization.getRoles();
315
+
316
+ for(uint256 i = 0; i < roles.length; i++) {
317
+ RoleId authzRoleId = roles[i];
318
+ IAccess.RoleInfo memory roleInfo = authorization.getRoleInfo(authzRoleId);
319
+ (RoleId roleId, bool exists) = getRoleForName(roleInfo.name.toString());
320
+
321
+ if (!exists) {
322
+ if (!AccessAdminLib.isDynamicRoleId(authzRoleId) || roleInfo.targetType == TargetType.Custom) {
323
+ roleId = authzRoleId;
324
+ }
325
+
326
+ _createRole(
327
+ roleId,
328
+ roleInfo,
329
+ true);
330
+ }
331
+ }
382
332
  }
383
333
 
384
- function _authorizeTargetFunctions(
385
- address target,
334
+
335
+ /// @dev Creates a role based on the provided parameters.
336
+ /// Checks that the provided role and role id and role name not already used.
337
+ function _createRole(
386
338
  RoleId roleId,
387
- FunctionInfo[] memory functions
339
+ RoleInfo memory info,
340
+ bool revertOnExistingRole
388
341
  )
389
342
  internal
390
343
  {
391
- if (roleId == getAdminRole()) {
392
- revert ErrorAccessAdminAuthorizeForAdminRoleInvalid(target);
344
+ bool isAdminOrPublicRole = AccessAdminLib.checkRoleCreation(this, roleId, info, revertOnExistingRole);
345
+ if (!isAdminOrPublicRole) {
346
+ _createRoleUnchecked(roleId, info);
393
347
  }
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
348
  }
408
349
 
409
- function _unauthorizeTargetFunctions(
410
- address target,
411
- FunctionInfo[] memory functions
350
+
351
+ function _createRoleUnchecked(
352
+ RoleId roleId,
353
+ RoleInfo memory info
412
354
  )
413
- internal
355
+ private
414
356
  {
415
- (
416
- bytes4[] memory functionSelectors,
417
- string[] memory functionNames
418
- ) = _processFunctionSelectors(target, functions, false);
357
+ // create role info
358
+ info.createdAt = TimestampLib.current();
359
+ info.pausedAt = TimestampLib.max();
360
+ _roleInfo[roleId] = info;
419
361
 
420
- _grantRoleAccessToFunctions(
421
- target,
422
- getAdminRole(),
423
- functionSelectors,
424
- functionNames,
425
- true); // allowLockedRoles
426
- }
362
+ // create role name info
363
+ _roleForName[info.name] = RoleNameInfo({
364
+ roleId: roleId,
365
+ exists: true});
427
366
 
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
- }
367
+ // add role to list of roles
368
+ _roleIds.push(roleId);
369
+
370
+ emit LogAccessAdminRoleCreated(_adminName, roleId, info.targetType, info.adminRoleId, info.name.toString());
461
371
  }
462
372
 
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
- )
373
+
374
+ /// @dev Activates or deactivates role.
375
+ /// The role activ property is indirectly controlled over the pausedAt timestamp.
376
+ function _setRoleActive(RoleId roleId, bool active)
471
377
  internal
472
- onlyExistingTarget(target)
473
- onlyExistingRole(roleId, true, allowLockedRoles)
474
378
  {
379
+ AccessAdminLib.checkRoleExists(this, roleId, false, false);
475
380
 
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))));
381
+ if (active) {
382
+ _roleInfo[roleId].pausedAt = TimestampLib.max();
383
+ } else {
384
+ _roleInfo[roleId].pausedAt = TimestampLib.current();
490
385
  }
386
+
387
+ Blocknumber lastUpdateIn = _roleInfo[roleId].lastUpdateIn;
388
+ _roleInfo[roleId].lastUpdateIn = BlocknumberLib.current();
389
+
390
+ emit LogAccessAdminRoleActivatedSet(_adminName, roleId, active, lastUpdateIn);
491
391
  }
492
392
 
493
393
 
494
394
  /// @dev grant the specified role to the provided account
495
395
  function _grantRoleToAccount(RoleId roleId, address account)
496
396
  internal
497
- onlyExistingRole(roleId, true, false)
498
397
  {
398
+ AccessAdminLib.checkRoleExists(this, roleId, true, false);
399
+
499
400
  // check max role members will not be exceeded
500
401
  if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
501
402
  revert ErrorAccessAdminRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
@@ -503,34 +404,38 @@ contract AccessAdmin is
503
404
 
504
405
  // check account is contract for contract role
505
406
  if (
506
- _roleInfo[roleId].roleType == RoleType.Contract &&
407
+ _roleInfo[roleId].targetType != TargetType.Custom &&
507
408
  !ContractLib.isContract(account) // will fail in account's constructor
508
409
  ) {
509
410
  revert ErrorAccessAdminRoleMemberNotContract(roleId, account);
510
411
  }
511
412
 
512
- // TODO check account already have roleId
413
+ // effects
513
414
  _roleMembers[roleId].add(account);
514
415
  _authority.grantRole(
515
416
  RoleId.unwrap(roleId),
516
417
  account,
517
418
  0);
518
419
 
519
- emit LogAccessAdminRoleGranted(_adminName, account, _getRoleName(roleId));
420
+ emit LogAccessAdminRoleGranted(
421
+ _adminName,
422
+ account,
423
+ AccessAdminLib.getRoleName(this, roleId));
520
424
  }
521
425
 
426
+
522
427
  /// @dev revoke the specified role from the provided account
523
428
  function _revokeRoleFromAccount(RoleId roleId, address account)
524
429
  internal
525
- onlyExistingRole(roleId, false, false)
526
430
  {
431
+ AccessAdminLib.checkRoleExists(this, roleId, false, false);
527
432
 
528
- // check role removal is permitted
529
- if (_roleInfo[roleId].roleType == RoleType.Contract) {
433
+ // check for attempt to revoke contract role
434
+ if (_roleInfo[roleId].targetType != TargetType.Custom) {
530
435
  revert ErrorAccessAdminRoleMemberRemovalDisabled(roleId, account);
531
436
  }
532
437
 
533
- // TODO check account have roleId?
438
+ // effects
534
439
  _roleMembers[roleId].remove(account);
535
440
  _authority.revokeRole(
536
441
  RoleId.unwrap(roleId),
@@ -540,165 +445,237 @@ contract AccessAdmin is
540
445
  }
541
446
 
542
447
 
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
448
+ function _getOrCreateTargetRoleIdAndName(
449
+ address target,
450
+ string memory targetName,
451
+ TargetType targetType
548
452
  )
549
453
  internal
454
+ returns (
455
+ RoleId roleId,
456
+ string memory roleName,
457
+ bool exists
458
+ )
550
459
  {
551
- AccessAdminLib.checkRoleCreation(this, roleId, info);
552
- _createRoleUnchecked(roleId, info);
460
+ roleName = AccessAdminLib.toRoleName(targetName);
461
+ (roleId, exists) = getRoleForName(roleName);
462
+
463
+ if (exists) {
464
+ return (roleId, roleName, true);
465
+ }
466
+
467
+ // get roleId
468
+ if (targetType == TargetType.Service || targetType == TargetType.GenericService) {
469
+ roleId = AccessAdminLib.getServiceRoleId(target, targetType);
470
+ } else {
471
+ uint64 nextRoleId = _nextRoleId[targetType];
472
+ roleId = AccessAdminLib.getTargetRoleId(target, targetType, nextRoleId);
473
+
474
+ // increment target type specific role id counter
475
+ _nextRoleId[targetType]++;
476
+ }
553
477
  }
554
478
 
555
479
 
556
480
  function _createTarget(
557
481
  address target,
558
482
  string memory targetName,
559
- bool checkAuthority,
560
- bool custom
483
+ TargetType targetType,
484
+ bool checkAuthority
561
485
  )
562
486
  internal
487
+ returns (RoleId contractRoleId)
563
488
  {
489
+ // checks
564
490
  AccessAdminLib.checkTargetCreation(this, target, targetName, checkAuthority);
565
- _createTargetUnchecked(target, targetName, custom);
566
- }
567
491
 
492
+ // effects
493
+ contractRoleId = _createTargetUnchecked(
494
+ target,
495
+ targetName,
496
+ targetType,
497
+ checkAuthority);
568
498
 
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);
586
-
587
- emit LogAccessAdminRoleCreated(_adminName, roleId, info.roleType, info.adminRoleId, info.name.toString());
499
+ // deal with token handler, if applicable
500
+ (
501
+ address tokenHandler,
502
+ string memory tokenHandlerName
503
+ ) = AccessAdminLib.getTokenHandler(target, targetName, targetType);
504
+
505
+ if (tokenHandler != address(0)) {
506
+ _createTargetUnchecked(
507
+ tokenHandler,
508
+ tokenHandlerName,
509
+ targetType,
510
+ checkAuthority);
511
+ }
588
512
  }
589
513
 
590
514
 
515
+ /// @dev Creates a new target and a corresponding contract role.
516
+ /// The function assigns the role to the target and logs the creation.
591
517
  function _createTargetUnchecked(
592
518
  address target,
593
519
  string memory targetName,
594
- bool custom
520
+ TargetType targetType,
521
+ bool managed
595
522
  )
596
523
  internal
524
+ returns (RoleId targetRoleId)
597
525
  {
526
+ // create target role (if not existing)
527
+ string memory roleName;
528
+ bool roleExists;
529
+ (targetRoleId, roleName, roleExists) = _getOrCreateTargetRoleIdAndName(target, targetName, targetType);
530
+
531
+ if (!roleExists) {
532
+ _createRole(
533
+ targetRoleId,
534
+ AccessAdminLib.roleInfo(
535
+ ADMIN_ROLE(),
536
+ targetType,
537
+ 1,
538
+ roleName),
539
+ true); // revert on existing role
540
+ }
541
+
598
542
  // create target info
599
543
  Str name = StrLib.toStr(targetName);
600
544
  _targetInfo[target] = TargetInfo({
601
545
  name: name,
602
- isCustom: custom,
603
- createdAt: TimestampLib.blockTimestamp()
604
- });
546
+ targetType: targetType,
547
+ roleId: targetRoleId,
548
+ createdAt: TimestampLib.current(),
549
+ lastUpdateIn: BlocknumberLib.current()});
605
550
 
606
551
  // create name to target mapping
607
552
  _targetForName[name] = target;
608
553
 
609
- // add role to list of roles
554
+ // add target to list of targets
610
555
  _targets.push(target);
611
556
 
612
- emit LogAccessAdminTargetCreated(_adminName, target, targetName);
557
+ // grant contract role to target
558
+ _grantRoleToAccount(targetRoleId, target);
559
+
560
+ emit LogAccessAdminTargetCreated(_adminName, targetName, managed, target, targetRoleId);
613
561
  }
614
562
 
615
563
 
616
564
  function _setTargetLocked(address target, bool locked)
617
565
  internal
618
- onlyExistingTarget(target)
619
566
  {
567
+ AccessAdminLib.checkTargetExists(this, target);
620
568
  _authority.setTargetClosed(target, locked);
621
- }
622
569
 
570
+ // logging
571
+ Blocknumber lastUpdateIn = _targetInfo[target].lastUpdateIn;
572
+ _targetInfo[target].lastUpdateIn = BlocknumberLib.current();
623
573
 
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>";
574
+ emit LogAccessAdminTargetLockedSet(_adminName, target, locked, lastUpdateIn);
629
575
  }
630
576
 
631
577
 
632
- function _checkAuthorization(
633
- address authorization,
634
- ObjectType expectedDomain,
635
- VersionPart expectedRelease,
636
- bool checkAlreadyInitialized
637
- )
578
+ /// @dev Authorize the functions of the target for the specified role.
579
+ function _authorizeFunctions(IAuthorization authorization, Str target, RoleId roleId)
638
580
  internal
639
- view
640
581
  {
641
- AccessAdminLib.checkAuthorization(
642
- address(_authorization),
643
- authorization,
644
- expectedDomain,
645
- expectedRelease,
646
- checkAlreadyInitialized);
582
+ _authorizeTargetFunctions(
583
+ getTargetForName(target),
584
+ AccessAdminLib.getAuthorizedRole(
585
+ this,
586
+ authorization,
587
+ roleId),
588
+ authorization.getAuthorizedFunctions(
589
+ target,
590
+ roleId),
591
+ false,
592
+ true);
647
593
  }
648
594
 
649
595
 
650
- function _checkRoleExists(
596
+ /// @dev Authorize the functions of the target for the specified role.
597
+ /// Flag addFunctions determines if functions are added or removed.
598
+ function _authorizeTargetFunctions(
599
+ address target,
651
600
  RoleId roleId,
652
- bool onlyActiveRole
601
+ FunctionInfo[] memory functions,
602
+ bool onlyComponentOrContractTargets,
603
+ bool addFunctions
653
604
  )
654
605
  internal
655
- view
656
606
  {
657
- if (!roleExists(roleId)) {
658
- revert ErrorAccessAdminRoleUnknown(roleId);
659
- }
607
+ // checks
608
+ AccessAdminLib.checkTargetAndRoleForFunctions(
609
+ this,
610
+ target,
611
+ roleId,
612
+ onlyComponentOrContractTargets);
660
613
 
661
- uint64 roleIdInt = RoleId.unwrap(roleId);
662
- if (roleIdInt == _authority.ADMIN_ROLE()) {
663
- revert ErrorAccessAdminRoleIsLocked(roleId);
614
+ if (addFunctions && roleId == getAdminRole()) {
615
+ revert ErrorAccessAdminAuthorizeForAdminRoleInvalid(target);
664
616
  }
665
617
 
666
- // check if role is disabled
667
- if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.blockTimestamp()) {
668
- revert ErrorAccessAdminRoleIsPaused(roleId);
618
+ _authority.setTargetFunctionRole(
619
+ target,
620
+ AccessAdminLib.getSelectors(functions),
621
+ RoleId.unwrap(roleId));
622
+
623
+ // update function set and log function grantings
624
+ for (uint256 i = 0; i < functions.length; i++) {
625
+ _updateFunctionAccess(
626
+ target,
627
+ roleId,
628
+ functions[i],
629
+ addFunctions);
669
630
  }
670
631
  }
671
632
 
672
633
 
673
-
674
- /// @dev check if target exists and reverts if it doesn't
675
- function _checkTargetExists(
676
- address target
634
+ function _updateFunctionAccess(
635
+ address target,
636
+ RoleId roleId,
637
+ FunctionInfo memory func,
638
+ bool addFunction
677
639
  )
678
640
  internal
679
- view
680
641
  {
681
- // check not yet created
682
- if (!targetExists(target)) {
683
- revert ErrorAccessAdminTargetNotCreated(target);
684
- }
685
- }
642
+ // update functions info
643
+ Selector selector = func.selector;
644
+ Blocknumber lastUpdateIn = _functionInfo[target][selector].lastUpdateIn;
686
645
 
646
+ // update function sets
647
+ if (addFunction) { SelectorSetLib.add(_targetFunctions[target], selector); }
648
+ else { SelectorSetLib.remove(_targetFunctions[target], selector); }
687
649
 
688
- function _checkIsRegistered(
689
- address registry,
690
- address target,
691
- ObjectType expectedType
692
- )
693
- internal
694
- view
695
- {
696
- AccessAdminLib.checkIsRegistered(registry, target, expectedType);
697
- }
650
+ _functionInfo[target][selector] = func;
651
+ _functionInfo[target][selector].lastUpdateIn = BlocknumberLib.current();
698
652
 
699
- function _checkRegistry(address registry) internal view {
700
- if (!ContractLib.isRegistry(registry)) {
701
- revert ErrorAccessAdminNotRegistry(registry);
702
- }
703
- }
653
+ // logging
654
+ emit LogAccessAdminFunctionGranted(
655
+ _adminName,
656
+ target,
657
+ AccessAdminLib.toFunctionGrantingString(this, func.name, roleId),
658
+ lastUpdateIn);
659
+ }
660
+
661
+
662
+ // TODO cleanup
663
+ // function _checkAuthorization(
664
+ // address authorization,
665
+ // ObjectType expectedDomain,
666
+ // VersionPart expectedRelease,
667
+ // bool expectServiceAuthorization,
668
+ // bool checkAlreadyInitialized
669
+ // )
670
+ // internal
671
+ // view
672
+ // {
673
+ // AccessAdminLib.checkAuthorization(
674
+ // _authorization,
675
+ // authorization,
676
+ // expectedDomain,
677
+ // expectedRelease,
678
+ // expectServiceAuthorization,
679
+ // checkAlreadyInitialized);
680
+ // }
704
681
  }