@etherisc/gif-next 0.0.2-ff282a4-523 → 0.0.2-ff3a8a0-504

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