@etherisc/gif-next 0.0.2-8a352ce → 0.0.2-8a72793-100

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 (649) hide show
  1. package/README.md +427 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1643 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/{registry/IRegistry.sol/IOwnable.json → authorization/AccessAdmin.sol/IAccessManagedChecker.json} +4 -4
  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 +615 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/access → authorization}/IAccess.sol/IAccess.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1349 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +382 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +644 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1016 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1509 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +864 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +915 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1008 -0
  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 +1475 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -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 +1479 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2426 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +412 -486
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +789 -0
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +511 -577
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2229 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +716 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2429 -0
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1035 -0
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3718 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  102. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  106. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  107. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  108. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  110. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  111. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  112. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  114. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +632 -0
  116. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  118. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +774 -0
  120. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  122. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +875 -0
  124. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  126. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  128. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  130. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +644 -0
  132. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1261 -0
  134. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +800 -0
  136. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +880 -0
  138. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +907 -0
  140. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1230 -0
  142. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  143. package/artifacts/contracts/pool/Pool.sol/Pool.json +1027 -0
  144. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  146. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1574 -0
  148. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +808 -0
  150. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +813 -0
  152. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +728 -0
  154. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
  156. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +644 -0
  158. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1496 -0
  160. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +848 -0
  162. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +597 -0
  164. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1064 -0
  166. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +981 -0
  168. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +602 -0
  170. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1018 -0
  172. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  173. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +453 -0
  174. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1333 -0
  176. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  178. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +808 -0
  180. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.json +930 -0
  182. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +784 -0
  184. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  185. package/artifacts/contracts/product/Product.sol/Product.json +1119 -0
  186. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  188. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  190. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  192. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1044 -113
  194. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1043 -0
  196. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  197. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  198. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  200. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/Registry.sol/Registry.json +1534 -178
  202. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2203 -0
  204. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  206. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1269 -0
  208. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +735 -0
  210. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2099 -0
  212. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  214. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1361 -0
  216. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  218. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  220. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  221. package/artifacts/contracts/shared/Component.sol/Component.json +707 -0
  222. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1532 -0
  224. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  226. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +485 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +578 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  231. package/artifacts/contracts/{instance/component/IComponent.sol/IInstanceLinked.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  232. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  233. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/ContractLib.sol/ITargetHelper.json} +4 -9
  234. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  235. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  236. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  237. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +632 -0
  238. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1180 -0
  240. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  241. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +709 -0
  242. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  243. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +510 -0
  244. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  245. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +146 -0
  246. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  247. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +57 -76
  248. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  249. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  250. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  251. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → shared/IRegisterable.sol/IRegisterable.json} +162 -160
  252. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  253. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +5 -19
  254. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  255. package/artifacts/contracts/shared/IService.sol/IService.json +399 -0
  256. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  257. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  258. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  259. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +797 -0
  260. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  261. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  262. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  263. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  264. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  265. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  266. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  267. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +209 -0
  268. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  269. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  270. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  271. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +378 -0
  272. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  273. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  274. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  275. package/artifacts/contracts/shared/Service.sol/Service.json +453 -0
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  278. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  279. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  280. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  281. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  282. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  283. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1465 -0
  284. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  285. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1096 -0
  286. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  288. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  289. package/artifacts/contracts/staking/Staking.sol/Staking.json +1849 -0
  290. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  292. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +788 -0
  294. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  296. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1301 -0
  298. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  299. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +732 -0
  300. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  301. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  302. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  303. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  304. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  305. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  306. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  308. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  310. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  312. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  314. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  316. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  318. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  319. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  320. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  322. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  323. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  324. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  326. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  328. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  330. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  332. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +199 -0
  334. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +433 -0
  336. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  340. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  342. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  344. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  346. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  348. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  350. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  352. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  354. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  356. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  358. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  360. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  361. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  362. package/contracts/accounting/AccountingService.sol +262 -0
  363. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  364. package/contracts/accounting/IAccountingService.sol +45 -0
  365. package/contracts/authorization/AccessAdmin.sol +831 -0
  366. package/contracts/authorization/AccessManagerCloneable.sol +159 -0
  367. package/contracts/authorization/Authorization.sol +365 -0
  368. package/contracts/authorization/IAccess.sol +49 -0
  369. package/contracts/authorization/IAccessAdmin.sol +171 -0
  370. package/contracts/authorization/IAuthorization.sol +80 -0
  371. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  372. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  373. package/contracts/distribution/BasicDistribution.sol +141 -0
  374. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  375. package/contracts/distribution/Distribution.sol +289 -0
  376. package/contracts/distribution/DistributionService.sol +358 -0
  377. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  378. package/contracts/distribution/IDistributionComponent.sol +52 -0
  379. package/contracts/distribution/IDistributionService.sol +101 -0
  380. package/contracts/examples/fire/DamageLevel.sol +59 -0
  381. package/contracts/examples/fire/FirePool.sol +90 -0
  382. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  383. package/contracts/examples/fire/FireProduct.sol +438 -0
  384. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  385. package/contracts/examples/fire/FireUSD.sol +26 -0
  386. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  387. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  388. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  389. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  390. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  391. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  392. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  393. package/contracts/instance/BundleSet.sol +130 -0
  394. package/contracts/instance/IInstance.sol +98 -15
  395. package/contracts/instance/IInstanceService.sol +83 -0
  396. package/contracts/instance/Instance.sol +271 -46
  397. package/contracts/instance/InstanceAdmin.sol +451 -0
  398. package/contracts/instance/InstanceAuthorizationV3.sol +235 -0
  399. package/contracts/instance/InstanceReader.sol +637 -0
  400. package/contracts/instance/InstanceService.sol +450 -0
  401. package/contracts/instance/InstanceServiceManager.sol +39 -0
  402. package/contracts/instance/InstanceStore.sol +298 -0
  403. package/contracts/instance/RiskSet.sol +118 -0
  404. package/contracts/instance/base/BalanceStore.sol +123 -0
  405. package/contracts/instance/base/Cloneable.sol +28 -0
  406. package/contracts/instance/base/ObjectCounter.sol +20 -0
  407. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  408. package/contracts/instance/base/ObjectSet.sol +77 -0
  409. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  410. package/contracts/instance/module/IBundle.sol +20 -0
  411. package/contracts/instance/module/IComponents.sol +51 -0
  412. package/contracts/instance/module/IDistribution.sol +42 -0
  413. package/contracts/instance/module/IPolicy.sol +85 -0
  414. package/contracts/instance/module/IRisk.sol +14 -0
  415. package/contracts/mock/Dip.sol +26 -0
  416. package/contracts/oracle/BasicOracle.sol +47 -0
  417. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  418. package/contracts/oracle/IOracle.sol +36 -0
  419. package/contracts/oracle/IOracleComponent.sol +33 -0
  420. package/contracts/oracle/IOracleService.sol +66 -0
  421. package/contracts/oracle/Oracle.sol +156 -0
  422. package/contracts/oracle/OracleService.sol +310 -0
  423. package/contracts/oracle/OracleServiceManager.sol +39 -0
  424. package/contracts/pool/BasicPool.sol +175 -0
  425. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  426. package/contracts/pool/BundleService.sol +395 -0
  427. package/contracts/pool/BundleServiceManager.sol +39 -0
  428. package/contracts/pool/IBundleService.sol +115 -0
  429. package/contracts/pool/IPoolComponent.sol +62 -0
  430. package/contracts/pool/IPoolService.sol +165 -0
  431. package/contracts/pool/Pool.sol +345 -0
  432. package/contracts/pool/PoolLib.sol +216 -0
  433. package/contracts/pool/PoolService.sol +757 -0
  434. package/contracts/pool/PoolServiceManager.sol +39 -0
  435. package/contracts/product/ApplicationService.sol +259 -0
  436. package/contracts/product/ApplicationServiceManager.sol +38 -0
  437. package/contracts/product/BasicProduct.sol +51 -0
  438. package/contracts/product/BasicProductAuthorization.sol +56 -0
  439. package/contracts/product/ClaimService.sol +632 -0
  440. package/contracts/product/ClaimServiceManager.sol +38 -0
  441. package/contracts/product/IApplicationService.sol +66 -0
  442. package/contracts/product/IClaimService.sol +135 -0
  443. package/contracts/product/IPolicyService.sol +95 -0
  444. package/contracts/product/IPricingService.sol +39 -0
  445. package/contracts/product/IProductComponent.sol +62 -0
  446. package/contracts/product/IRiskService.sol +33 -0
  447. package/contracts/product/PolicyService.sol +664 -0
  448. package/contracts/product/PolicyServiceLib.sol +65 -0
  449. package/contracts/product/PolicyServiceManager.sol +39 -0
  450. package/contracts/product/PricingService.sol +304 -0
  451. package/contracts/product/PricingServiceManager.sol +39 -0
  452. package/contracts/product/Product.sol +478 -0
  453. package/contracts/product/RiskService.sol +145 -0
  454. package/contracts/product/RiskServiceManager.sol +39 -0
  455. package/contracts/registry/ChainNft.sol +176 -100
  456. package/contracts/registry/IRegistry.sol +148 -52
  457. package/contracts/registry/IRegistryService.sol +62 -0
  458. package/contracts/registry/IRelease.sol +26 -0
  459. package/contracts/registry/ITransferInterceptor.sol +6 -0
  460. package/contracts/registry/Registry.sol +665 -117
  461. package/contracts/registry/RegistryAdmin.sol +473 -0
  462. package/contracts/registry/RegistryAuthorization.sol +266 -0
  463. package/contracts/registry/RegistryService.sol +241 -0
  464. package/contracts/registry/RegistryServiceManager.sol +53 -0
  465. package/contracts/registry/ReleaseAdmin.sol +252 -0
  466. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  467. package/contracts/registry/ReleaseRegistry.sol +517 -0
  468. package/contracts/registry/ServiceAuthorizationV3.sol +329 -0
  469. package/contracts/registry/TokenRegistry.sol +313 -0
  470. package/contracts/shared/Component.sol +227 -0
  471. package/contracts/shared/ComponentService.sol +689 -0
  472. package/contracts/shared/ComponentServiceManager.sol +38 -0
  473. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  474. package/contracts/shared/ContractLib.sol +263 -0
  475. package/contracts/shared/IComponent.sol +61 -0
  476. package/contracts/shared/IComponentService.sol +110 -0
  477. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  478. package/contracts/shared/IKeyValueStore.sol +54 -0
  479. package/contracts/shared/ILifecycle.sol +31 -0
  480. package/contracts/shared/INftOwnable.sol +25 -0
  481. package/contracts/shared/IPolicyHolder.sol +35 -0
  482. package/contracts/shared/IRegisterable.sol +37 -0
  483. package/contracts/shared/IRegistryLinked.sol +11 -0
  484. package/contracts/shared/IService.sol +23 -0
  485. package/contracts/shared/InitializableERC165.sol +35 -0
  486. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  487. package/contracts/shared/KeyValueStore.sol +131 -0
  488. package/contracts/shared/Lifecycle.sol +88 -0
  489. package/contracts/shared/NftIdSet.sol +65 -0
  490. package/contracts/shared/NftOwnable.sol +127 -0
  491. package/contracts/shared/PolicyHolder.sol +62 -0
  492. package/contracts/shared/Registerable.sol +106 -0
  493. package/contracts/shared/RegistryLinked.sol +38 -0
  494. package/contracts/shared/Service.sol +65 -0
  495. package/contracts/shared/TokenHandler.sol +342 -0
  496. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  497. package/contracts/staking/IStaking.sol +169 -0
  498. package/contracts/staking/IStakingService.sol +165 -0
  499. package/contracts/staking/StakeManagerLib.sol +224 -0
  500. package/contracts/staking/Staking.sol +526 -0
  501. package/contracts/staking/StakingLifecycle.sol +23 -0
  502. package/contracts/staking/StakingManager.sol +52 -0
  503. package/contracts/staking/StakingReader.sol +190 -0
  504. package/contracts/staking/StakingService.sol +430 -0
  505. package/contracts/staking/StakingServiceManager.sol +45 -0
  506. package/contracts/staking/StakingStore.sol +605 -0
  507. package/contracts/staking/TargetManagerLib.sol +211 -0
  508. package/contracts/type/AddressSet.sol +58 -0
  509. package/contracts/type/Amount.sol +150 -0
  510. package/contracts/type/Blocknumber.sol +142 -0
  511. package/contracts/type/ClaimId.sol +80 -0
  512. package/contracts/type/DistributorType.sol +55 -0
  513. package/contracts/type/Fee.sol +66 -0
  514. package/contracts/type/Key32.sol +50 -0
  515. package/contracts/type/Key32Set.sol +62 -0
  516. package/contracts/type/NftId.sol +85 -0
  517. package/contracts/type/NftIdSet.sol +62 -0
  518. package/contracts/type/ObjectType.sol +294 -0
  519. package/contracts/type/PayoutId.sol +82 -0
  520. package/contracts/type/Referral.sol +90 -0
  521. package/contracts/type/RequestId.sol +75 -0
  522. package/contracts/type/RiskId.sol +74 -0
  523. package/contracts/type/RoleId.sol +182 -0
  524. package/contracts/type/Seconds.sol +101 -0
  525. package/contracts/type/Selector.sol +107 -0
  526. package/contracts/type/StateId.sol +149 -0
  527. package/contracts/type/String.sol +53 -0
  528. package/contracts/type/Timestamp.sol +141 -0
  529. package/contracts/type/UFixed.sol +245 -0
  530. package/contracts/type/Version.sol +159 -0
  531. package/contracts/upgradeability/IVersionable.sol +53 -0
  532. package/contracts/upgradeability/ProxyManager.sol +232 -0
  533. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  534. package/contracts/upgradeability/Versionable.sol +59 -0
  535. package/package.json +26 -7
  536. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  537. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  538. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  539. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  540. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  541. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  542. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  543. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  544. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  545. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  546. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  547. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  548. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  549. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  550. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  551. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  552. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  553. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  554. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  555. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  556. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  557. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  558. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  559. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  560. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  562. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  564. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  566. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  568. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  570. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  572. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  573. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  574. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  575. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  576. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  577. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  578. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  579. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  580. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  581. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  582. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  583. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  584. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  585. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  586. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  587. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  588. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  589. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  590. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  591. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  592. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  593. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  594. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  595. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  596. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  597. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  598. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  599. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  600. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  601. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  602. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  603. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  604. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  605. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  606. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  607. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  608. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  609. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  610. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  611. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  612. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  613. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  614. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  615. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  616. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  617. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  618. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  620. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  622. package/contracts/components/Component.sol +0 -62
  623. package/contracts/components/IPool.sol +0 -9
  624. package/contracts/components/IProduct.sol +0 -12
  625. package/contracts/components/Pool.sol +0 -29
  626. package/contracts/components/Product.sol +0 -66
  627. package/contracts/experiment/errors/Require.sol +0 -33
  628. package/contracts/experiment/errors/Revert.sol +0 -39
  629. package/contracts/experiment/inheritance/A.sol +0 -56
  630. package/contracts/experiment/inheritance/B.sol +0 -23
  631. package/contracts/experiment/inheritance/C.sol +0 -28
  632. package/contracts/experiment/inheritance/IA.sol +0 -18
  633. package/contracts/experiment/inheritance/IB.sol +0 -9
  634. package/contracts/experiment/inheritance/IC.sol +0 -11
  635. package/contracts/experiment/types/TypeA.sol +0 -42
  636. package/contracts/experiment/types/TypeB.sol +0 -24
  637. package/contracts/instance/access/Access.sol +0 -218
  638. package/contracts/instance/access/IAccess.sol +0 -83
  639. package/contracts/instance/component/ComponentModule.sol +0 -248
  640. package/contracts/instance/component/IComponent.sol +0 -95
  641. package/contracts/instance/policy/IPolicy.sol +0 -66
  642. package/contracts/instance/policy/PolicyModule.sol +0 -107
  643. package/contracts/instance/pool/IPoolModule.sol +0 -41
  644. package/contracts/instance/pool/PoolModule.sol +0 -86
  645. package/contracts/instance/product/IProductService.sol +0 -46
  646. package/contracts/instance/product/ProductService.sol +0 -108
  647. package/contracts/registry/IChainNft.sol +0 -18
  648. package/contracts/types/ChainId.sol +0 -30
  649. package/contracts/types/NftId.sol +0 -35
@@ -0,0 +1,831 @@
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 {IAccessAdmin} from "./IAccessAdmin.sol";
9
+ import {IAuthorization} from "./IAuthorization.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+
12
+ import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
13
+ import {ContractLib} from "../shared/ContractLib.sol";
14
+ import {NftId, NftIdLib} from "../type/NftId.sol";
15
+ import {ObjectType} from "../type/ObjectType.sol";
16
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
17
+ import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
18
+ import {Str, StrLib} from "../type/String.sol";
19
+ import {TimestampLib} from "../type/Timestamp.sol";
20
+ import {VersionPart} from "../type/Version.sol";
21
+
22
+ interface IAccessManagedChecker {
23
+ function authority() external view returns (address);
24
+ }
25
+
26
+ /**
27
+ * @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
28
+ * The contract provides read functions to query all available roles, targets and access rights.
29
+ * This contract works for both a constructor based deployment or a deployment based on cloning and initialization.
30
+ */
31
+ contract AccessAdmin is
32
+ AccessManagedUpgradeable,
33
+ ReentrancyGuardUpgradeable,
34
+ IAccessAdmin
35
+ {
36
+ using EnumerableSet for EnumerableSet.AddressSet;
37
+
38
+ string public constant ADMIN_ROLE_NAME = "AdminRole";
39
+ string public constant PUBLIC_ROLE_NAME = "PublicRole";
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
+ modifier onlyDeployer() {
89
+ // special case for cloned AccessAdmin contracts
90
+ // IMPORTANT cloning and initialize authority needs to be done in a single transaction
91
+ if (_deployer == address(0)) {
92
+ _deployer = msg.sender;
93
+ }
94
+
95
+ if (msg.sender != _deployer) {
96
+ revert ErrorAccessAdminNotDeployer();
97
+ }
98
+ _;
99
+ }
100
+
101
+ modifier onlyRoleAdmin(RoleId roleId) {
102
+ _checkRoleExists(roleId, false);
103
+
104
+ if (!hasAdminRole(msg.sender, roleId)) {
105
+ revert ErrorAccessAdminNotAdminOfRole(_roleInfo[roleId].adminRoleId);
106
+ }
107
+ _;
108
+ }
109
+
110
+ modifier onlyRoleMember(RoleId roleId) {
111
+ if (!hasRole(msg.sender, roleId)) {
112
+ revert ErrorAccessAdminNotRoleOwner(roleId);
113
+ }
114
+ _;
115
+ }
116
+
117
+ modifier onlyExistingRole(
118
+ RoleId roleId,
119
+ bool onlyActiveRole,
120
+ bool allowLockedRoles
121
+ )
122
+ {
123
+ if (!allowLockedRoles) {
124
+ _checkRoleExists(roleId, onlyActiveRole);
125
+ }
126
+ _;
127
+ }
128
+
129
+ modifier onlyExistingTarget(address target) {
130
+ _checkTarget(target);
131
+ _;
132
+ }
133
+
134
+ //-------------- initialization functions ------------------------------//
135
+
136
+ // event LogAccessAdminDebug(string message);
137
+
138
+ /// @dev Initializes this admin with the provided accessManager (and authorization specification).
139
+ /// Internally initializes access manager with this admin and creates basic role setup.
140
+ function initialize(
141
+ address authority,
142
+ string memory adminName
143
+ )
144
+ public
145
+ initializer()
146
+ {
147
+ __AccessAdmin_init(authority, adminName);
148
+ }
149
+
150
+
151
+ function __AccessAdmin_init(
152
+ address authority,
153
+ string memory adminName
154
+ )
155
+ internal
156
+ onlyInitializing()
157
+ onlyDeployer()
158
+ {
159
+ // checks
160
+ // check authority is contract
161
+ if (!ContractLib.isContract(authority)) {
162
+ revert ErrorAccessAdminAuthorityNotContract(authority);
163
+ }
164
+
165
+ // check name not empty
166
+ if (bytes(adminName).length == 0) {
167
+ revert ErrorAccessAdminAccessManagerEmptyName();
168
+ }
169
+
170
+ _authority = AccessManagerCloneable(authority);
171
+ _authority.initialize(address(this));
172
+
173
+ // delayed additional check for authority after its initialization
174
+ if (!ContractLib.isAuthority(authority)) {
175
+ revert ErrorAccessAdminAccessManagerNotAccessManager(authority);
176
+ }
177
+
178
+ // effects
179
+ // set and initialize this access manager contract as
180
+ // the admin (ADMIN_ROLE) of the provided authority
181
+ __AccessManaged_init(authority);
182
+
183
+ // set name for logging
184
+ _adminName = adminName;
185
+
186
+ // set initial linked NFT ID to zero
187
+ _linkedNftId = NftIdLib.zero();
188
+
189
+ // create admin and public roles
190
+ _initializeAdminAndPublicRoles();
191
+ }
192
+
193
+
194
+ /// @dev check if target exists and reverts if it doesn't
195
+ function _checkTarget(
196
+ address target
197
+ )
198
+ internal
199
+ view
200
+ {
201
+ // check not yet created
202
+ if (!targetExists(target)) {
203
+ revert ErrorAccessAdminTargetNotCreated(target);
204
+ }
205
+ }
206
+
207
+ function _checkIsRegistered(
208
+ address registry,
209
+ address target,
210
+ ObjectType expectedType
211
+ )
212
+ internal
213
+ view
214
+ {
215
+ ObjectType tagetType = IRegistry(registry).getObjectInfo(target).objectType;
216
+ if (tagetType.eqz()) {
217
+ revert ErrorAccessAdminNotRegistered(target);
218
+ }
219
+
220
+ if (tagetType != expectedType) {
221
+ revert ErrorAccessAdminTargetTypeMismatch(target, expectedType, tagetType);
222
+ }
223
+ }
224
+
225
+ /// @dev check if target exists and and has expected type, reverts if it doesn't
226
+ function _checkTargetWithType(
227
+ address target,
228
+ ObjectType expectedType
229
+ )
230
+ internal
231
+ view
232
+ {
233
+ // check target exists
234
+ _checkTarget(target);
235
+
236
+ // check target type
237
+ ObjectType tagetType = _authority.getRegistry().getObjectInfo(target).objectType;
238
+ if (tagetType != expectedType) {
239
+ revert ErrorAccessAdminTargetTypeMismatch(target, expectedType, tagetType);
240
+ }
241
+
242
+ // target release is checked during component/instance registration
243
+ }
244
+
245
+
246
+ function _checkAuthorization(
247
+ address authorization,
248
+ ObjectType expectedDomain,
249
+ VersionPart expectedRelease,
250
+ bool checkAlreadyInitialized
251
+ )
252
+ internal
253
+ view
254
+ {
255
+ // checks
256
+ // check not yet initialized
257
+ if (checkAlreadyInitialized && address(_authorization) != address(0)) {
258
+ revert ErrorAccessAdminAlreadyInitialized(address(_authorization));
259
+ }
260
+
261
+ // check contract type matches
262
+ if (!ContractLib.supportsInterface(authorization, type(IAuthorization).interfaceId)) {
263
+ revert ErrorAccessAdminNotAuthorization(authorization);
264
+ }
265
+
266
+ // check domain matches
267
+ ObjectType domain = IAuthorization(authorization).getDomain();
268
+ if (domain != expectedDomain) {
269
+ revert ErrorAccessAdminDomainMismatch(authorization, expectedDomain, domain);
270
+ }
271
+
272
+ // check release matches
273
+ VersionPart authorizationRelease = IAuthorization(authorization).getRelease();
274
+ if (authorizationRelease != expectedRelease) {
275
+ revert ErrorAccessAdminReleaseMismatch(authorization, getRelease(), authorizationRelease);
276
+ }
277
+ }
278
+
279
+
280
+ function getRelease() public view virtual returns (VersionPart release) {
281
+ return _authority.getRelease();
282
+ }
283
+
284
+
285
+ function getRegistry() public view returns (IRegistry registry) {
286
+ return _authority.getRegistry();
287
+ }
288
+
289
+
290
+ function getLinkedNftId() external view returns (NftId linkedNftId) {
291
+ return _linkedNftId;
292
+ }
293
+
294
+
295
+ function getLinkedOwner() external view returns (address linkedOwner) {
296
+ return getRegistry().ownerOf(_linkedNftId);
297
+ }
298
+
299
+
300
+
301
+ function isLocked() public view returns (bool locked) {
302
+ return _authority.isLocked();
303
+ }
304
+
305
+ function _linkToNftOwnable(address registerable) internal {
306
+ if (!getRegistry().isRegistered(registerable)) {
307
+ revert ErrorAccessAdminNotRegistered(registerable);
308
+ }
309
+
310
+ _linkedNftId = getRegistry().getNftIdForAddress(registerable);
311
+ }
312
+
313
+ function _initializeAdminAndPublicRoles()
314
+ internal
315
+ virtual
316
+ onlyInitializing()
317
+ {
318
+ RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
319
+
320
+ // setup admin role
321
+ _createRoleUnchecked(
322
+ ADMIN_ROLE(),
323
+ toRole({
324
+ adminRoleId: ADMIN_ROLE(),
325
+ roleType: RoleType.Contract,
326
+ maxMemberCount: 1,
327
+ name: ADMIN_ROLE_NAME}));
328
+
329
+ // add this contract as admin role member
330
+ _roleMembers[adminRoleId].add(address(this));
331
+
332
+ // setup public role
333
+ _createRoleUnchecked(
334
+ PUBLIC_ROLE(),
335
+ toRole({
336
+ adminRoleId: ADMIN_ROLE(),
337
+ roleType: RoleType.Gif,
338
+ maxMemberCount: type(uint32).max,
339
+ name: PUBLIC_ROLE_NAME}));
340
+ }
341
+
342
+ //--- view functions for roles ------------------------------------------//
343
+
344
+ function roles() external view returns (uint256 numberOfRoles) {
345
+ return _roleIds.length;
346
+ }
347
+
348
+ function getRoleId(uint256 idx) external view returns (RoleId roleId) {
349
+ return _roleIds[idx];
350
+ }
351
+
352
+ function getAdminRole() public view returns (RoleId roleId) {
353
+ return RoleId.wrap(_authority.ADMIN_ROLE());
354
+ }
355
+
356
+ function getPublicRole() public view returns (RoleId roleId) {
357
+ return RoleId.wrap(_authority.PUBLIC_ROLE());
358
+ }
359
+
360
+ function roleExists(RoleId roleId) public view returns (bool exists) {
361
+ return _roleInfo[roleId].createdAt.gtz();
362
+ }
363
+
364
+ function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory) {
365
+ return _roleInfo[roleId];
366
+ }
367
+
368
+ function getRoleForName(Str name) external view returns (RoleNameInfo memory) {
369
+ return _roleForName[name];
370
+ }
371
+
372
+ function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
373
+ return _roleMembers[roleId].length();
374
+ }
375
+
376
+ function getRoleMember(RoleId roleId, uint256 idx) external view returns (address account) {
377
+ return _roleMembers[roleId].at(idx);
378
+ }
379
+
380
+ // TODO false because not role member or because role not exists?
381
+ function hasRole(address account, RoleId roleId) public view returns (bool) {
382
+ (bool isMember, ) = _authority.hasRole(
383
+ RoleId.unwrap(roleId),
384
+ account);
385
+ return isMember;
386
+ }
387
+
388
+ function hasAdminRole(address account, RoleId roleId)
389
+ public
390
+ virtual
391
+ view
392
+ returns (bool)
393
+ {
394
+ return hasRole(account, _roleInfo[roleId].adminRoleId);
395
+ }
396
+
397
+ //--- view functions for targets ----------------------------------------//
398
+
399
+ function targetExists(address target) public view returns (bool exists) {
400
+ return _targetInfo[target].createdAt.gtz();
401
+ }
402
+
403
+ function targets() external view returns (uint256 numberOfTargets) {
404
+ return _targets.length;
405
+ }
406
+
407
+ function getTargetAddress(uint256 idx) external view returns (address target) {
408
+ return _targets[idx];
409
+ }
410
+
411
+ function getTargetInfo(address target) external view returns (TargetInfo memory targetInfo) {
412
+ return _targetInfo[target];
413
+ }
414
+
415
+ function getTargetForName(Str name) public view returns (address target) {
416
+ return _targetForName[name];
417
+ }
418
+
419
+ function isTargetLocked(address target) public view returns (bool locked) {
420
+ return _authority.isTargetClosed(target);
421
+ }
422
+
423
+ function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
424
+ return SelectorSetLib.size(_targetFunctions[target]);
425
+ }
426
+
427
+ function getAuthorizedFunction(
428
+ address target,
429
+ uint256 idx
430
+ )
431
+ external
432
+ view
433
+ returns (
434
+ FunctionInfo memory func,
435
+ RoleId roleId
436
+ )
437
+ {
438
+ Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
439
+ func = _functionInfo[target][selector];
440
+ roleId = RoleIdLib.toRoleId(
441
+ _authority.getTargetFunctionRole(
442
+ target,
443
+ selector.toBytes4()));
444
+ }
445
+
446
+ function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
447
+ (can, ) = _authority.canCall(caller, target, selector.toBytes4());
448
+ }
449
+
450
+ function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) public view returns (RoleInfo memory) {
451
+ return RoleInfo({
452
+ name: StrLib.toStr(name),
453
+ adminRoleId: adminRoleId,
454
+ roleType: roleType,
455
+ maxMemberCount: maxMemberCount,
456
+ createdAt: TimestampLib.blockTimestamp(),
457
+ pausedAt: TimestampLib.max()
458
+ });
459
+ }
460
+
461
+ function toFunction(bytes4 selector, string memory name) public view returns (FunctionInfo memory) {
462
+ return FunctionInfo({
463
+ name: StrLib.toStr(name),
464
+ selector: SelectorLib.toSelector(selector),
465
+ createdAt: TimestampLib.blockTimestamp()});
466
+ }
467
+
468
+ function deployer() public view returns (address) {
469
+ return _deployer;
470
+ }
471
+
472
+ //--- internal/private functions -------------------------------------------------//
473
+
474
+ function _createTargetWithRole(
475
+ address target,
476
+ string memory targetName,
477
+ RoleId targetRoleId
478
+ )
479
+ internal
480
+ {
481
+ _createTarget(target, targetName, true, false);
482
+ _grantRoleToAccount(targetRoleId, target);
483
+ }
484
+
485
+ function _authorizeTargetFunctions(
486
+ address target,
487
+ RoleId roleId,
488
+ FunctionInfo[] memory functions
489
+ )
490
+ internal
491
+ {
492
+ if (roleId == getAdminRole()) {
493
+ revert ErrorAccessAdminAuthorizeForAdminRoleInvalid(target);
494
+ }
495
+
496
+ (
497
+ bytes4[] memory functionSelectors,
498
+ string[] memory functionNames
499
+ ) = _processFunctionSelectors(target, functions, true);
500
+
501
+ // apply authz via access manager
502
+ _grantRoleAccessToFunctions(
503
+ target,
504
+ roleId,
505
+ functionSelectors,
506
+ functionNames,
507
+ false); // allow locked roles
508
+ }
509
+
510
+ function _unauthorizeTargetFunctions(
511
+ address target,
512
+ FunctionInfo[] memory functions
513
+ )
514
+ internal
515
+ {
516
+ (
517
+ bytes4[] memory functionSelectors,
518
+ string[] memory functionNames
519
+ ) = _processFunctionSelectors(target, functions, false);
520
+
521
+ _grantRoleAccessToFunctions(
522
+ target,
523
+ getAdminRole(),
524
+ functionSelectors,
525
+ functionNames,
526
+ true); // allowLockedRoles
527
+ }
528
+
529
+ function _processFunctionSelectors(
530
+ address target,
531
+ FunctionInfo[] memory functions,
532
+ bool addFunctions
533
+ )
534
+ internal
535
+ onlyExistingTarget(target)
536
+ returns (
537
+ bytes4[] memory functionSelectors,
538
+ string[] memory functionNames
539
+ )
540
+ {
541
+ uint256 n = functions.length;
542
+ functionSelectors = new bytes4[](n);
543
+ functionNames = new string[](n);
544
+ FunctionInfo memory func;
545
+ Selector selector;
546
+
547
+ for (uint256 i = 0; i < n; i++) {
548
+ func = functions[i];
549
+ selector = func.selector;
550
+
551
+ // add function selector to target selector set if not in set
552
+ if (addFunctions) { SelectorSetLib.add(_targetFunctions[target], selector); }
553
+ else { SelectorSetLib.remove(_targetFunctions[target], selector); }
554
+
555
+ // set function name
556
+ _functionInfo[target][selector] = func;
557
+
558
+ // add bytes4 selector to function selector array
559
+ functionSelectors[i] = selector.toBytes4();
560
+ functionNames[i] = func.name.toString();
561
+ }
562
+ }
563
+
564
+ /// @dev grant the specified role access to all functions in the provided selector list
565
+ function _grantRoleAccessToFunctions(
566
+ address target,
567
+ RoleId roleId,
568
+ bytes4[] memory functionSelectors,
569
+ string[] memory functionNames,
570
+ bool allowLockedRoles // admin and public roles are locked
571
+ )
572
+ internal
573
+ onlyExistingTarget(target)
574
+ onlyExistingRole(roleId, true, allowLockedRoles)
575
+ {
576
+
577
+ _authority.setTargetFunctionRole(
578
+ target,
579
+ functionSelectors,
580
+ RoleId.unwrap(roleId));
581
+
582
+ // log function grantings
583
+ for (uint256 i = 0; i < functionSelectors.length; i++) {
584
+ emit LogAccessAdminFunctionGranted(
585
+ _adminName,
586
+ target,
587
+ string(abi.encodePacked(
588
+ functionNames[i],
589
+ "(): ",
590
+ _getRoleName(roleId))));
591
+ }
592
+ }
593
+
594
+
595
+ /// @dev grant the specified role to the provided account
596
+ function _grantRoleToAccount(RoleId roleId, address account)
597
+ internal
598
+ onlyExistingRole(roleId, true, false)
599
+ {
600
+ // check max role members will not be exceeded
601
+ if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
602
+ revert ErrorAccessAdminRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
603
+ }
604
+
605
+ // check account is contract for contract role
606
+ if (
607
+ _roleInfo[roleId].roleType == RoleType.Contract &&
608
+ !ContractLib.isContract(account) // will fail in account's constructor
609
+ ) {
610
+ revert ErrorAccessAdminRoleMemberNotContract(roleId, account);
611
+ }
612
+
613
+ // TODO check account already have roleId
614
+ _roleMembers[roleId].add(account);
615
+ _authority.grantRole(
616
+ RoleId.unwrap(roleId),
617
+ account,
618
+ 0);
619
+
620
+ emit LogAccessAdminRoleGranted(_adminName, account, _getRoleName(roleId));
621
+ }
622
+
623
+ /// @dev revoke the specified role from the provided account
624
+ function _revokeRoleFromAccount(RoleId roleId, address account)
625
+ internal
626
+ onlyExistingRole(roleId, false, false)
627
+ {
628
+
629
+ // check role removal is permitted
630
+ if (_roleInfo[roleId].roleType == RoleType.Contract) {
631
+ revert ErrorAccessAdminRoleMemberRemovalDisabled(roleId, account);
632
+ }
633
+
634
+ // TODO check account have roleId?
635
+ _roleMembers[roleId].remove(account);
636
+ _authority.revokeRole(
637
+ RoleId.unwrap(roleId),
638
+ account);
639
+
640
+ emit LogAccessAdminRoleRevoked(_adminName, account, _roleInfo[roleId].name.toString());
641
+ }
642
+
643
+
644
+ /// @dev Creates a role based on the provided parameters.
645
+ /// Checks that the provided role and role id and role name not already used.
646
+ function _createRole(
647
+ RoleId roleId,
648
+ RoleInfo memory info
649
+ )
650
+ internal
651
+ {
652
+ // check role does not yet exist
653
+ if(roleExists(roleId)) {
654
+ revert ErrorAccessAdminRoleAlreadyCreated(
655
+ roleId,
656
+ _roleInfo[roleId].name.toString());
657
+ }
658
+
659
+ // check admin role exists
660
+ if(!roleExists(info.adminRoleId)) {
661
+ revert ErrorAccessAdminRoleAdminNotExisting(info.adminRoleId);
662
+ }
663
+
664
+ // check role name is not empty
665
+ if(info.name.length() == 0) {
666
+ revert ErrorAccessAdminRoleNameEmpty(roleId);
667
+ }
668
+
669
+ // check role name is not used for another role
670
+ if(_roleForName[info.name].exists) {
671
+ revert ErrorAccessAdminRoleNameAlreadyExists(
672
+ roleId,
673
+ info.name.toString(),
674
+ _roleForName[info.name].roleId);
675
+ }
676
+
677
+ _createRoleUnchecked(roleId, info);
678
+ }
679
+
680
+
681
+ function _createRoleUnchecked(
682
+ RoleId roleId,
683
+ RoleInfo memory info
684
+ )
685
+ private
686
+ {
687
+ // create role info
688
+ info.createdAt = TimestampLib.blockTimestamp();
689
+ _roleInfo[roleId] = info;
690
+
691
+ // create role name info
692
+ _roleForName[info.name] = RoleNameInfo({
693
+ roleId: roleId,
694
+ exists: true});
695
+
696
+ // add role to list of roles
697
+ _roleIds.push(roleId);
698
+
699
+ emit LogAccessAdminRoleCreated(_adminName, roleId, info.roleType, info.adminRoleId, info.name.toString());
700
+ }
701
+
702
+
703
+ function _createTarget(
704
+ address target,
705
+ string memory targetName,
706
+ bool checkAuthority,
707
+ bool custom
708
+ )
709
+ internal
710
+ {
711
+ // check target does not yet exist
712
+ if(targetExists(target)) {
713
+ revert ErrorAccessAdminTargetAlreadyCreated(
714
+ target,
715
+ _targetInfo[target].name.toString());
716
+ }
717
+
718
+ // check target name is not empty
719
+ Str name = StrLib.toStr(targetName);
720
+ if(name.length() == 0) {
721
+ revert ErrorAccessAdminTargetNameEmpty(target);
722
+ }
723
+
724
+ // check target name is not used for another target
725
+ if( _targetForName[name] != address(0)) {
726
+ revert ErrorAccessAdminTargetNameAlreadyExists(
727
+ target,
728
+ targetName,
729
+ _targetForName[name]);
730
+ }
731
+
732
+ // check target is an access managed contract
733
+ if (!_isAccessManaged(target)) {
734
+ revert ErrorAccessAdminTargetNotAccessManaged(target);
735
+ }
736
+
737
+ // check target shares authority with this contract
738
+ if (checkAuthority) {
739
+ address targetAuthority = AccessManagedUpgradeable(target).authority();
740
+ if (targetAuthority != authority()) {
741
+ revert ErrorAccessAdminTargetAuthorityMismatch(authority(), targetAuthority);
742
+ }
743
+ }
744
+
745
+ // create target info
746
+ _targetInfo[target] = TargetInfo({
747
+ name: name,
748
+ isCustom: custom,
749
+ createdAt: TimestampLib.blockTimestamp()
750
+ });
751
+
752
+ // create name to target mapping
753
+ _targetForName[name] = target;
754
+
755
+ // add role to list of roles
756
+ _targets.push(target);
757
+
758
+ emit LogAccessAdminTargetCreated(_adminName, target, targetName);
759
+ }
760
+
761
+
762
+ function _setTargetLocked(address target, bool locked)
763
+ internal
764
+ onlyExistingTarget(target)
765
+ {
766
+ _authority.setTargetClosed(target, locked);
767
+ }
768
+
769
+
770
+ function _isAccessManaged(address target)
771
+ internal
772
+ view
773
+ returns (bool)
774
+ {
775
+ if (!ContractLib.isContract(target)) {
776
+ return false;
777
+ }
778
+
779
+ (bool success, ) = target.staticcall(
780
+ abi.encodeWithSelector(
781
+ IAccessManagedChecker.authority.selector));
782
+
783
+ return success;
784
+ }
785
+
786
+
787
+ function _getAccountName(address account) internal view returns (string memory) {
788
+ if (targetExists(account)) {
789
+ return _targetInfo[account].name.toString();
790
+ }
791
+ return "<unknown-account>";
792
+ }
793
+
794
+
795
+ function _getRoleName(RoleId roleId) internal view returns (string memory) {
796
+ if (roleExists(roleId)) {
797
+ return _roleInfo[roleId].name.toString();
798
+ }
799
+ return "<unknown-role>";
800
+ }
801
+
802
+
803
+ function _checkRoleExists(
804
+ RoleId roleId,
805
+ bool onlyActiveRole
806
+ )
807
+ internal
808
+ view
809
+ {
810
+ if (!roleExists(roleId)) {
811
+ revert ErrorAccessAdminRoleUnknown(roleId);
812
+ }
813
+
814
+ uint64 roleIdInt = RoleId.unwrap(roleId);
815
+ if (roleIdInt == _authority.ADMIN_ROLE()) {
816
+ revert ErrorAccessAdminRoleIsLocked(roleId);
817
+ }
818
+
819
+ // check if role is disabled
820
+ if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.blockTimestamp()) {
821
+ revert ErrorAccessAdminRoleIsPaused(roleId);
822
+ }
823
+ }
824
+
825
+
826
+ function _checkRegistry(address registry) internal view {
827
+ if (!ContractLib.isRegistry(registry)) {
828
+ revert ErrorAccessAdminNotRegistry(registry);
829
+ }
830
+ }
831
+ }