@etherisc/gif-next 0.0.2-eb1b869-461 → 0.0.2-eb4b6ab-521

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 (697) hide show
  1. package/README.md +405 -20
  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 +1341 -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 +1434 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -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 +1092 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -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 +470 -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 +1501 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +860 -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 +502 -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 +470 -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 +470 -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 +502 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2408 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -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 +299 -1057
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +759 -0
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +430 -1243
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1800 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2339 -0
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1025 -0
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +744 -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/IAccess.sol/IAccess.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  104. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  106. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  107. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  108. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  109. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  110. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  111. package/artifacts/contracts/instance/{treasury/ITreasury.sol/ITreasury.json → module/IRisk.sol/IRisk.json} +2 -2
  112. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  113. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  114. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  116. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  118. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  120. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +774 -0
  122. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  124. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +875 -0
  126. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  128. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  130. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  132. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  134. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1367 -0
  136. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  137. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +820 -0
  138. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +946 -0
  140. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +907 -0
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1309 -0
  144. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  145. package/artifacts/contracts/pool/Pool.sol/Pool.json +1027 -0
  146. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1626 -0
  148. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +792 -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 +470 -0
  158. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1538 -0
  160. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +860 -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 +1082 -0
  166. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +968 -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 +1320 -0
  176. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +808 -0
  178. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  179. package/artifacts/contracts/product/PricingService.sol/PricingService.json +930 -0
  180. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +784 -0
  182. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  183. package/artifacts/contracts/product/Product.sol/Product.json +1119 -0
  184. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  185. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  186. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  187. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  188. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  189. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  190. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  191. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1030 -27
  192. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  193. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1043 -0
  194. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  195. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  196. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  197. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  198. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  199. package/artifacts/contracts/registry/Registry.sol/Registry.json +1547 -119
  200. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  201. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1861 -0
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  203. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1269 -0
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +735 -0
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1325 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  215. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  216. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  217. package/artifacts/contracts/shared/Component.sol/Component.json +707 -0
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1597 -0
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +824 -0
  222. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +485 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  227. package/artifacts/contracts/{instance/component/IComponent.sol/IInstanceLinked.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  228. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  229. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/ContractLib.sol/ITargetHelper.json} +4 -9
  230. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  232. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  233. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +632 -0
  234. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1221 -0
  236. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  237. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +709 -0
  238. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +510 -0
  240. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  241. package/artifacts/contracts/{instance/lifecycle → shared}/ILifecycle.sol/ILifecycle.json +65 -53
  242. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  243. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +57 -76
  244. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  245. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  246. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  247. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → shared/IRegisterable.sol/IRegisterable.json} +165 -135
  248. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  249. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +5 -19
  250. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  251. package/artifacts/contracts/shared/IService.sol/IService.json +399 -0
  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 +797 -0
  256. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  257. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  258. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  259. package/artifacts/contracts/{instance/lifecycle/ILifecycle.sol/ILifecycleModule.json → shared/Lifecycle.sol/Lifecycle.json} +50 -58
  260. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  261. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  262. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  263. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +209 -0
  264. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  265. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  266. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  267. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +378 -0
  268. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  269. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  270. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  271. package/artifacts/contracts/shared/Service.sol/Service.json +453 -0
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +822 -0
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  276. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  278. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1447 -0
  280. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  281. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1067 -0
  282. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  284. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  285. package/artifacts/contracts/staking/Staking.sol/Staking.json +1849 -0
  286. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  288. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +788 -0
  290. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  292. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1272 -0
  294. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +732 -0
  296. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  298. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  299. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  300. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  301. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  302. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  304. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  306. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  308. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  310. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  312. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  314. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  315. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  316. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  318. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  319. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  320. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  322. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  324. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  326. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  328. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +199 -0
  330. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  332. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  334. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  336. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  338. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  340. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  342. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  344. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  346. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  348. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +113 -0
  350. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  352. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  354. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  356. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  358. package/contracts/accounting/AccountingService.sol +262 -0
  359. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  360. package/contracts/accounting/IAccountingService.sol +45 -0
  361. package/contracts/authorization/AccessAdmin.sol +659 -0
  362. package/contracts/authorization/AccessManagerCloneable.sol +149 -0
  363. package/contracts/authorization/Authorization.sol +289 -0
  364. package/contracts/authorization/IAccess.sol +49 -0
  365. package/contracts/authorization/IAccessAdmin.sol +140 -0
  366. package/contracts/authorization/IAuthorization.sol +60 -0
  367. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  368. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  369. package/contracts/distribution/BasicDistribution.sol +139 -0
  370. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  371. package/contracts/distribution/Distribution.sol +287 -0
  372. package/contracts/distribution/DistributionService.sol +357 -0
  373. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  374. package/contracts/distribution/IDistributionComponent.sol +52 -0
  375. package/contracts/distribution/IDistributionService.sol +100 -0
  376. package/contracts/examples/fire/DamageLevel.sol +59 -0
  377. package/contracts/examples/fire/FirePool.sol +90 -0
  378. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  379. package/contracts/examples/fire/FireProduct.sol +438 -0
  380. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  381. package/contracts/examples/fire/FireUSD.sol +26 -0
  382. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  383. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  384. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  385. package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
  386. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  387. package/contracts/examples/unpermissioned/SimpleProduct.sol +370 -0
  388. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  389. package/contracts/instance/BundleSet.sol +130 -0
  390. package/contracts/instance/IInstance.sol +63 -22
  391. package/contracts/instance/IInstanceService.sol +72 -0
  392. package/contracts/instance/Instance.sol +218 -55
  393. package/contracts/instance/InstanceAdmin.sol +326 -0
  394. package/contracts/instance/InstanceAuthorizationV3.sol +225 -0
  395. package/contracts/instance/InstanceReader.sol +596 -0
  396. package/contracts/instance/InstanceService.sol +404 -0
  397. package/contracts/instance/InstanceServiceManager.sol +39 -0
  398. package/contracts/instance/InstanceStore.sol +298 -0
  399. package/contracts/instance/RiskSet.sol +118 -0
  400. package/contracts/instance/base/BalanceStore.sol +123 -0
  401. package/contracts/instance/base/Cloneable.sol +28 -0
  402. package/contracts/instance/base/ObjectCounter.sol +20 -0
  403. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  404. package/contracts/instance/base/ObjectSet.sol +77 -0
  405. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  406. package/contracts/instance/module/IAccess.sol +46 -0
  407. package/contracts/instance/module/IBundle.sol +20 -0
  408. package/contracts/instance/module/IComponents.sol +51 -0
  409. package/contracts/instance/module/IDistribution.sol +41 -0
  410. package/contracts/instance/module/IPolicy.sol +85 -0
  411. package/contracts/instance/module/IRisk.sol +14 -0
  412. package/contracts/mock/Dip.sol +2 -2
  413. package/contracts/oracle/BasicOracle.sol +47 -0
  414. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  415. package/contracts/oracle/IOracle.sol +36 -0
  416. package/contracts/oracle/IOracleComponent.sol +33 -0
  417. package/contracts/oracle/IOracleService.sol +66 -0
  418. package/contracts/oracle/Oracle.sol +156 -0
  419. package/contracts/oracle/OracleService.sol +310 -0
  420. package/contracts/oracle/OracleServiceManager.sol +39 -0
  421. package/contracts/pool/BasicPool.sol +175 -0
  422. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  423. package/contracts/pool/BundleService.sol +425 -0
  424. package/contracts/pool/BundleServiceManager.sol +39 -0
  425. package/contracts/pool/IBundleService.sol +121 -0
  426. package/contracts/pool/IPoolComponent.sol +62 -0
  427. package/contracts/pool/IPoolService.sol +153 -0
  428. package/contracts/pool/Pool.sol +345 -0
  429. package/contracts/pool/PoolService.sol +615 -0
  430. package/contracts/pool/PoolServiceManager.sol +39 -0
  431. package/contracts/product/ApplicationService.sol +259 -0
  432. package/contracts/product/ApplicationServiceManager.sol +38 -0
  433. package/contracts/product/BasicProduct.sol +51 -0
  434. package/contracts/product/BasicProductAuthorization.sol +41 -0
  435. package/contracts/product/ClaimService.sol +708 -0
  436. package/contracts/product/ClaimServiceManager.sol +38 -0
  437. package/contracts/product/IApplicationService.sol +66 -0
  438. package/contracts/product/IClaimService.sol +136 -0
  439. package/contracts/product/IPolicyService.sol +90 -0
  440. package/contracts/product/IPricingService.sol +39 -0
  441. package/contracts/product/IProductComponent.sol +62 -0
  442. package/contracts/product/IRiskService.sol +33 -0
  443. package/contracts/product/PolicyService.sol +736 -0
  444. package/contracts/product/PolicyServiceManager.sol +39 -0
  445. package/contracts/product/PricingService.sol +304 -0
  446. package/contracts/product/PricingServiceManager.sol +39 -0
  447. package/contracts/product/Product.sol +463 -0
  448. package/contracts/product/RiskService.sol +151 -0
  449. package/contracts/product/RiskServiceManager.sol +39 -0
  450. package/contracts/registry/ChainNft.sol +175 -61
  451. package/contracts/registry/IRegistry.sol +142 -45
  452. package/contracts/registry/IRegistryService.sol +62 -0
  453. package/contracts/registry/IRelease.sol +26 -0
  454. package/contracts/registry/ITransferInterceptor.sol +6 -0
  455. package/contracts/registry/Registry.sol +677 -133
  456. package/contracts/registry/RegistryAdmin.sol +344 -0
  457. package/contracts/registry/RegistryService.sol +241 -0
  458. package/contracts/registry/RegistryServiceManager.sol +53 -0
  459. package/contracts/registry/ReleaseAdmin.sol +245 -0
  460. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  461. package/contracts/registry/ReleaseRegistry.sol +511 -0
  462. package/contracts/registry/ServiceAuthorizationV3.sol +242 -0
  463. package/contracts/registry/TokenRegistry.sol +313 -0
  464. package/contracts/shared/Component.sol +226 -0
  465. package/contracts/shared/ComponentService.sol +700 -0
  466. package/contracts/shared/ComponentServiceManager.sol +38 -0
  467. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  468. package/contracts/shared/ContractLib.sol +252 -0
  469. package/contracts/shared/IComponent.sol +61 -0
  470. package/contracts/shared/IComponentService.sol +116 -0
  471. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  472. package/contracts/shared/IKeyValueStore.sol +54 -0
  473. package/contracts/shared/ILifecycle.sol +31 -0
  474. package/contracts/shared/INftOwnable.sol +25 -0
  475. package/contracts/shared/IPolicyHolder.sol +35 -0
  476. package/contracts/shared/IRegisterable.sol +37 -0
  477. package/contracts/shared/IRegistryLinked.sol +11 -0
  478. package/contracts/shared/IService.sol +23 -0
  479. package/contracts/shared/InitializableERC165.sol +27 -0
  480. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  481. package/contracts/shared/KeyValueStore.sol +131 -0
  482. package/contracts/shared/Lifecycle.sol +88 -0
  483. package/contracts/shared/NftIdSet.sol +65 -0
  484. package/contracts/shared/NftOwnable.sol +127 -0
  485. package/contracts/shared/PolicyHolder.sol +62 -0
  486. package/contracts/shared/Registerable.sol +109 -0
  487. package/contracts/shared/RegistryLinked.sol +38 -0
  488. package/contracts/shared/Service.sol +65 -0
  489. package/contracts/shared/TokenHandler.sol +389 -0
  490. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  491. package/contracts/staking/IStaking.sol +173 -0
  492. package/contracts/staking/IStakingService.sol +157 -0
  493. package/contracts/staking/StakeManagerLib.sol +224 -0
  494. package/contracts/staking/Staking.sol +526 -0
  495. package/contracts/staking/StakingLifecycle.sol +23 -0
  496. package/contracts/staking/StakingManager.sol +52 -0
  497. package/contracts/staking/StakingReader.sol +190 -0
  498. package/contracts/staking/StakingService.sol +439 -0
  499. package/contracts/staking/StakingServiceManager.sol +44 -0
  500. package/contracts/staking/StakingStore.sol +605 -0
  501. package/contracts/staking/TargetManagerLib.sol +211 -0
  502. package/contracts/type/AddressSet.sol +58 -0
  503. package/contracts/type/Amount.sol +150 -0
  504. package/contracts/{types → type}/Blocknumber.sol +27 -3
  505. package/contracts/type/ClaimId.sol +80 -0
  506. package/contracts/type/DistributorType.sol +55 -0
  507. package/contracts/type/Fee.sol +66 -0
  508. package/contracts/type/Key32.sol +50 -0
  509. package/contracts/type/Key32Set.sol +62 -0
  510. package/contracts/type/NftId.sol +85 -0
  511. package/contracts/type/NftIdSet.sol +62 -0
  512. package/contracts/type/ObjectType.sol +290 -0
  513. package/contracts/type/PayoutId.sol +82 -0
  514. package/contracts/type/Referral.sol +90 -0
  515. package/contracts/type/RequestId.sol +75 -0
  516. package/contracts/type/RiskId.sol +74 -0
  517. package/contracts/type/RoleId.sol +165 -0
  518. package/contracts/type/Seconds.sol +101 -0
  519. package/contracts/type/Selector.sol +102 -0
  520. package/contracts/{types → type}/StateId.sol +64 -6
  521. package/contracts/type/String.sol +53 -0
  522. package/contracts/{types → type}/Timestamp.sol +51 -12
  523. package/contracts/{types → type}/UFixed.sol +58 -23
  524. package/contracts/type/Version.sol +120 -0
  525. package/contracts/upgradeability/IVersionable.sol +53 -0
  526. package/contracts/upgradeability/ProxyManager.sol +232 -0
  527. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  528. package/contracts/upgradeability/Versionable.sol +59 -0
  529. package/package.json +17 -7
  530. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  531. package/artifacts/contracts/components/Component.sol/Component.json +0 -205
  532. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  533. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  534. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  535. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  536. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  537. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  538. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  539. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -328
  540. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  541. package/artifacts/contracts/components/Product.sol/Product.json +0 -346
  542. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  543. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  544. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  545. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  546. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  547. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  548. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  549. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  550. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  551. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  552. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  553. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  554. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  555. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  556. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  557. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  558. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  559. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  560. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  562. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  564. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  566. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  568. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  570. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  572. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  574. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  575. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  576. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  577. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  578. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  579. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  580. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  581. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  582. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  583. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  584. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  585. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  586. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  587. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  588. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  589. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  590. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  591. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  592. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  593. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  594. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  595. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  596. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  597. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  598. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  599. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  600. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  601. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  602. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  603. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  604. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  605. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  606. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  607. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  608. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  609. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  610. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  611. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  612. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
  613. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  614. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  615. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  616. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  617. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  618. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  619. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  620. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  621. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  622. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  623. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  624. package/artifacts/contracts/mock/Dip.sol/DIP.dbg.json +0 -4
  625. package/artifacts/contracts/mock/Dip.sol/DIP.json +0 -338
  626. package/artifacts/contracts/mock/TestPool.sol/TestPool.dbg.json +0 -4
  627. package/artifacts/contracts/mock/TestPool.sol/TestPool.json +0 -294
  628. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.dbg.json +0 -4
  629. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.json +0 -384
  630. package/artifacts/contracts/mock/Usdc.sol/USDC.dbg.json +0 -4
  631. package/artifacts/contracts/mock/Usdc.sol/USDC.json +0 -338
  632. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  633. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  634. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  635. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  636. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  637. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  638. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  639. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  640. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  641. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  642. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  643. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  644. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  645. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  646. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  647. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  649. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  650. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  651. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  652. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  653. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  654. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  655. package/contracts/components/Component.sol +0 -77
  656. package/contracts/components/IPool.sol +0 -15
  657. package/contracts/components/IProduct.sol +0 -16
  658. package/contracts/components/Pool.sol +0 -52
  659. package/contracts/components/Product.sol +0 -89
  660. package/contracts/experiment/errors/Require.sol +0 -38
  661. package/contracts/experiment/errors/Revert.sol +0 -44
  662. package/contracts/experiment/inheritance/A.sol +0 -53
  663. package/contracts/experiment/inheritance/B.sol +0 -28
  664. package/contracts/experiment/inheritance/C.sol +0 -34
  665. package/contracts/experiment/inheritance/IA.sol +0 -13
  666. package/contracts/experiment/inheritance/IB.sol +0 -10
  667. package/contracts/experiment/inheritance/IC.sol +0 -12
  668. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  669. package/contracts/experiment/statemachine/ISM.sol +0 -25
  670. package/contracts/experiment/statemachine/README.md +0 -112
  671. package/contracts/experiment/statemachine/SM.sol +0 -57
  672. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  673. package/contracts/experiment/types/TypeA.sol +0 -47
  674. package/contracts/experiment/types/TypeB.sol +0 -29
  675. package/contracts/instance/access/Access.sol +0 -165
  676. package/contracts/instance/access/IAccess.sol +0 -63
  677. package/contracts/instance/component/ComponentModule.sol +0 -274
  678. package/contracts/instance/component/IComponent.sol +0 -74
  679. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  680. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  681. package/contracts/instance/policy/IPolicy.sol +0 -50
  682. package/contracts/instance/policy/PolicyModule.sol +0 -114
  683. package/contracts/instance/pool/IPoolModule.sol +0 -23
  684. package/contracts/instance/pool/PoolModule.sol +0 -81
  685. package/contracts/instance/product/IProductService.sol +0 -36
  686. package/contracts/instance/product/ProductService.sol +0 -136
  687. package/contracts/instance/treasury/ITreasury.sol +0 -91
  688. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  689. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  690. package/contracts/mock/TestPool.sol +0 -16
  691. package/contracts/mock/TestProduct.sol +0 -39
  692. package/contracts/mock/Usdc.sol +0 -26
  693. package/contracts/registry/IChainNft.sol +0 -21
  694. package/contracts/types/ChainId.sol +0 -38
  695. package/contracts/types/Fee.sol +0 -32
  696. package/contracts/types/NftId.sol +0 -51
  697. package/contracts/types/ObjectType.sol +0 -107
@@ -0,0 +1,659 @@
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 {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
9
+ import {ContractLib} from "../shared/ContractLib.sol";
10
+ import {IAccessAdmin} from "./IAccessAdmin.sol";
11
+ import {IRegistry} from "../registry/IRegistry.sol";
12
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
+ import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
14
+ import {Str, StrLib} from "../type/String.sol";
15
+ import {TimestampLib} from "../type/Timestamp.sol";
16
+ import {VersionPart} from "../type/Version.sol";
17
+
18
+ interface IAccessManagedChecker {
19
+ function authority() external view returns (address);
20
+ }
21
+
22
+ /**
23
+ * @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
24
+ * The contract provides read functions to query all available roles, targets and access rights.
25
+ * This contract works for both a constructor based deployment or a deployment based on cloning and initialization.
26
+ */
27
+ contract AccessAdmin is
28
+ AccessManagedUpgradeable,
29
+ ReentrancyGuardUpgradeable,
30
+ IAccessAdmin
31
+ {
32
+ using EnumerableSet for EnumerableSet.AddressSet;
33
+
34
+ string public constant ADMIN_ROLE_NAME = "AdminRole";
35
+ string public constant PUBLIC_ROLE_NAME = "PublicRole";
36
+
37
+ /// @dev the OpenZeppelin access manager driving the access admin contract
38
+ AccessManagerCloneable internal _authority;
39
+
40
+ /// @dev stores the deployer address and allows to create initializers
41
+ /// that are restricted to the deployer address.
42
+ address internal _deployer;
43
+
44
+ /// @dev store role info per role id
45
+ mapping(RoleId roleId => RoleInfo info) internal _roleInfo;
46
+
47
+ /// @dev store role name info per role name
48
+ mapping(Str roleName => RoleNameInfo nameInfo) internal _roleForName;
49
+
50
+ /// @dev store array with all created roles
51
+ RoleId [] internal _roleIds;
52
+
53
+ /// @dev store set of current role members for given role
54
+ mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
55
+
56
+ /// @dev store target info per target address
57
+ mapping(address target => TargetInfo info) internal _targetInfo;
58
+
59
+ /// @dev store role name info per role name
60
+ mapping(Str targetName => address target) internal _targetForName;
61
+
62
+ /// @dev store array with all created targets
63
+ address [] internal _targets;
64
+
65
+ /// @dev store all managed functions per target
66
+ mapping(address target => SelectorSetLib.Set selectors) internal _targetFunctions;
67
+
68
+ /// @dev function infos array
69
+ mapping(address target => mapping(Selector selector => FunctionInfo)) internal _functionInfo;
70
+
71
+ /// @dev temporary dynamic functions array
72
+ bytes4[] private _functions;
73
+
74
+ modifier onlyDeployer() {
75
+ // special case for cloned AccessAdmin contracts
76
+ // IMPORTANT cloning and initialize authority needs to be done in a single transaction
77
+ if (_deployer == address(0)) {
78
+ _deployer = msg.sender;
79
+ }
80
+
81
+ if (msg.sender != _deployer) {
82
+ revert ErrorNotDeployer();
83
+ }
84
+ _;
85
+ }
86
+
87
+ modifier onlyRoleAdmin(RoleId roleId) {
88
+ _checkRoleExists(roleId, false);
89
+
90
+ if (!hasAdminRole(msg.sender, roleId)) {
91
+ revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
92
+ }
93
+ _;
94
+ }
95
+
96
+ modifier onlyRoleMember(RoleId roleId) {
97
+ if (!hasRole(msg.sender, roleId)) {
98
+ revert ErrorNotRoleOwner(roleId);
99
+ }
100
+ _;
101
+ }
102
+
103
+ modifier onlyExistingRole(
104
+ RoleId roleId,
105
+ bool onlyActiveRole,
106
+ bool allowLockedRoles
107
+ )
108
+ {
109
+ if (!allowLockedRoles) {
110
+ _checkRoleExists(roleId, onlyActiveRole);
111
+ }
112
+ _;
113
+ }
114
+
115
+ modifier onlyExistingTarget(address target) {
116
+ _checkTarget(target);
117
+ _;
118
+ }
119
+
120
+ //-------------- initialization functions ------------------------------//
121
+
122
+ // event LogAccessAdminDebug(string message);
123
+
124
+ /// @dev Initializes this admin with the provided accessManager (and authorization specification).
125
+ /// Internally initializes access manager with this admin and creates basic role setup.
126
+ function initialize(
127
+ AccessManagerCloneable authority
128
+ )
129
+ public
130
+ initializer()
131
+ {
132
+ __AccessAdmin_init(authority);
133
+ }
134
+
135
+
136
+ function __AccessAdmin_init(
137
+ AccessManagerCloneable authority
138
+ )
139
+ internal
140
+ onlyInitializing()
141
+ onlyDeployer() // initializes deployer if not initialized yet
142
+ {
143
+ authority.initialize(address(this));
144
+
145
+ // set and initialize this access manager contract as
146
+ // the admin (ADMIN_ROLE) of the provided authority
147
+ __AccessManaged_init(address(authority));
148
+ _authority = authority;
149
+
150
+ // create admin and public roles
151
+ _initializeAdminAndPublicRoles();
152
+
153
+ // additional use case specific initialization
154
+ _initializeCustom();
155
+ }
156
+
157
+
158
+ function getRegistry() public view returns (IRegistry registry) {
159
+ return _authority.getRegistry();
160
+ }
161
+
162
+
163
+ function getRelease() public view returns (VersionPart release) {
164
+ return _authority.getRelease();
165
+ }
166
+
167
+
168
+ function _initializeAdminAndPublicRoles()
169
+ internal
170
+ virtual
171
+ onlyInitializing()
172
+ {
173
+ RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
174
+
175
+ // setup admin role
176
+ _createRoleUnchecked(
177
+ ADMIN_ROLE(),
178
+ toRole({
179
+ adminRoleId: ADMIN_ROLE(),
180
+ roleType: RoleType.Contract,
181
+ maxMemberCount: 1,
182
+ name: ADMIN_ROLE_NAME}));
183
+
184
+ // add this contract as admin role member
185
+ _roleMembers[adminRoleId].add(address(this));
186
+
187
+ // setup public role
188
+ _createRoleUnchecked(
189
+ PUBLIC_ROLE(),
190
+ toRole({
191
+ adminRoleId: ADMIN_ROLE(),
192
+ roleType: RoleType.Gif,
193
+ maxMemberCount: type(uint32).max,
194
+ name: PUBLIC_ROLE_NAME}));
195
+ }
196
+
197
+
198
+ function _initializeCustom()
199
+ internal
200
+ virtual
201
+ onlyInitializing()
202
+ { }
203
+
204
+ //--- view functions for roles ------------------------------------------//
205
+
206
+ function roles() external view returns (uint256 numberOfRoles) {
207
+ return _roleIds.length;
208
+ }
209
+
210
+ function getRoleId(uint256 idx) external view returns (RoleId roleId) {
211
+ return _roleIds[idx];
212
+ }
213
+
214
+ function getAdminRole() public view returns (RoleId roleId) {
215
+ return RoleId.wrap(_authority.ADMIN_ROLE());
216
+ }
217
+
218
+ function getPublicRole() public view returns (RoleId roleId) {
219
+ return RoleId.wrap(_authority.PUBLIC_ROLE());
220
+ }
221
+
222
+ function roleExists(RoleId roleId) public view returns (bool exists) {
223
+ return _roleInfo[roleId].createdAt.gtz();
224
+ }
225
+
226
+ function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory) {
227
+ return _roleInfo[roleId];
228
+ }
229
+
230
+ function getRoleForName(Str name) external view returns (RoleNameInfo memory) {
231
+ return _roleForName[name];
232
+ }
233
+
234
+ function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
235
+ return _roleMembers[roleId].length();
236
+ }
237
+
238
+ function getRoleMember(RoleId roleId, uint256 idx) external view returns (address account) {
239
+ return _roleMembers[roleId].at(idx);
240
+ }
241
+
242
+ // TODO false because not role member or because role not exists?
243
+ function hasRole(address account, RoleId roleId) public view returns (bool) {
244
+ (bool isMember, ) = _authority.hasRole(
245
+ RoleId.unwrap(roleId),
246
+ account);
247
+ return isMember;
248
+ }
249
+
250
+ function hasAdminRole(address account, RoleId roleId)
251
+ public
252
+ virtual
253
+ view
254
+ returns (bool)
255
+ {
256
+ return hasRole(account, _roleInfo[roleId].adminRoleId);
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) external 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.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 canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
309
+ (can, ) = _authority.canCall(caller, target, selector.toBytes4());
310
+ }
311
+
312
+ function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) public view returns (RoleInfo memory) {
313
+ return RoleInfo({
314
+ name: StrLib.toStr(name),
315
+ adminRoleId: adminRoleId,
316
+ roleType: roleType,
317
+ maxMemberCount: maxMemberCount,
318
+ createdAt: TimestampLib.blockTimestamp(),
319
+ pausedAt: TimestampLib.max()
320
+ });
321
+ }
322
+
323
+ function toFunction(bytes4 selector, string memory name) public view returns (FunctionInfo memory) {
324
+ return FunctionInfo({
325
+ name: StrLib.toStr(name),
326
+ selector: SelectorLib.toSelector(selector),
327
+ createdAt: TimestampLib.blockTimestamp()});
328
+ }
329
+
330
+ function deployer() public view returns (address) {
331
+ return _deployer;
332
+ }
333
+
334
+ //--- internal/private functions -------------------------------------------------//
335
+
336
+ function _authorizeTargetFunctions(
337
+ address target,
338
+ RoleId roleId,
339
+ FunctionInfo[] memory functions
340
+ )
341
+ internal
342
+ {
343
+ if (roleId == getAdminRole()) {
344
+ revert ErrorAuthorizeForAdminRoleInvalid(target);
345
+ }
346
+
347
+ bool addFunctions = true;
348
+ bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
349
+
350
+ // apply authz via access manager
351
+ _grantRoleAccessToFunctions(
352
+ target,
353
+ roleId,
354
+ functionSelectors,
355
+ false); // allowLockedRoles
356
+ }
357
+
358
+ function _unauthorizeTargetFunctions(
359
+ address target,
360
+ FunctionInfo[] memory functions
361
+ )
362
+ internal
363
+ {
364
+ bool addFunctions = false;
365
+ bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
366
+
367
+ _grantRoleAccessToFunctions(
368
+ target,
369
+ getAdminRole(),
370
+ functionSelectors,
371
+ true); // allowLockedRoles
372
+ }
373
+
374
+ function _processFunctionSelectors(
375
+ address target,
376
+ FunctionInfo[] memory functions,
377
+ bool addFunctions
378
+ )
379
+ internal
380
+ onlyExistingTarget(target)
381
+ returns (
382
+ bytes4[] memory functionSelectors
383
+ )
384
+ {
385
+ uint256 n = functions.length;
386
+ functionSelectors = new bytes4[](n);
387
+ FunctionInfo memory func;
388
+ Selector selector;
389
+
390
+ for (uint256 i = 0; i < n; i++) {
391
+ func = functions[i];
392
+ selector = func.selector;
393
+
394
+ // add function selector to target selector set if not in set
395
+ if (addFunctions) { SelectorSetLib.add(_targetFunctions[target], selector); }
396
+ else { SelectorSetLib.remove(_targetFunctions[target], selector); }
397
+
398
+ // set function name
399
+ _functionInfo[target][selector] = func;
400
+
401
+ // add bytes4 selector to function selector array
402
+ functionSelectors[i] = selector.toBytes4();
403
+ }
404
+ }
405
+
406
+ /// @dev grant the specified role access to all functions in the provided selector list
407
+ function _grantRoleAccessToFunctions(
408
+ address target,
409
+ RoleId roleId,
410
+ bytes4[] memory functionSelectors,
411
+ bool allowLockedRoles // admin and public roles are locked
412
+ )
413
+ internal
414
+ onlyExistingTarget(target)
415
+ onlyExistingRole(roleId, true, allowLockedRoles)
416
+ {
417
+ _authority.setTargetFunctionRole(
418
+ target,
419
+ functionSelectors,
420
+ RoleId.unwrap(roleId));
421
+
422
+ // implizit logging: rely on OpenZeppelin log TargetFunctionRoleUpdated
423
+ }
424
+
425
+
426
+ /// @dev grant the specified role to the provided account
427
+ function _grantRoleToAccount(RoleId roleId, address account)
428
+ internal
429
+ onlyExistingRole(roleId, true, false)
430
+ {
431
+ // check max role members will not be exceeded
432
+ if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
433
+ revert ErrorRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
434
+ }
435
+
436
+ // check account is contract for contract role
437
+ if (
438
+ _roleInfo[roleId].roleType == RoleType.Contract &&
439
+ !ContractLib.isContract(account) // will fail in account's constructor
440
+ ) {
441
+ revert ErrorRoleMemberNotContract(roleId, account);
442
+ }
443
+
444
+ // TODO check account already have roleId
445
+ _roleMembers[roleId].add(account);
446
+ _authority.grantRole(
447
+ RoleId.unwrap(roleId),
448
+ account,
449
+ 0);
450
+
451
+ // indirect logging: rely on OpenZeppelin log RoleGranted
452
+ }
453
+
454
+ /// @dev revoke the specified role from the provided account
455
+ function _revokeRoleFromAccount(RoleId roleId, address account)
456
+ internal
457
+ onlyExistingRole(roleId, false, false)
458
+ {
459
+
460
+ // check role removal is permitted
461
+ if (_roleInfo[roleId].roleType == RoleType.Contract) {
462
+ revert ErrorRoleMemberRemovalDisabled(roleId, account);
463
+ }
464
+
465
+ // TODO check account have roleId?
466
+ _roleMembers[roleId].remove(account);
467
+ _authority.revokeRole(
468
+ RoleId.unwrap(roleId),
469
+ account);
470
+
471
+ // indirect logging: rely on OpenZeppelin log RoleGranted
472
+ }
473
+
474
+
475
+ /// @dev Creates a role based on the provided parameters.
476
+ /// Checks that the provided role and role id and role name not already used.
477
+ function _createRole(
478
+ RoleId roleId,
479
+ RoleInfo memory info
480
+ )
481
+ internal
482
+ {
483
+ // check role does not yet exist
484
+ if(roleExists(roleId)) {
485
+ revert ErrorRoleAlreadyCreated(
486
+ roleId,
487
+ _roleInfo[roleId].name.toString());
488
+ }
489
+
490
+ // check admin role exists
491
+ if(!roleExists(info.adminRoleId)) {
492
+ revert ErrorRoleAdminNotExisting(info.adminRoleId);
493
+ }
494
+
495
+ // check role name is not empty
496
+ if(info.name.length() == 0) {
497
+ revert ErrorRoleNameEmpty(roleId);
498
+ }
499
+
500
+ // check role name is not used for another role
501
+ if(_roleForName[info.name].exists) {
502
+ revert ErrorRoleNameAlreadyExists(
503
+ roleId,
504
+ info.name.toString(),
505
+ _roleForName[info.name].roleId);
506
+ }
507
+
508
+ _createRoleUnchecked(roleId, info);
509
+ }
510
+
511
+
512
+ function _createRoleUnchecked(
513
+ RoleId roleId,
514
+ RoleInfo memory info
515
+ )
516
+ private
517
+ {
518
+ // create role info
519
+ info.createdAt = TimestampLib.blockTimestamp();
520
+ _roleInfo[roleId] = info;
521
+
522
+ // create role name info
523
+ _roleForName[info.name] = RoleNameInfo({
524
+ roleId: roleId,
525
+ exists: true});
526
+
527
+ // add role to list of roles
528
+ _roleIds.push(roleId);
529
+
530
+ emit LogRoleCreated(roleId, info.roleType, info.adminRoleId, info.name.toString());
531
+ }
532
+
533
+
534
+ function _createTarget(
535
+ address target,
536
+ string memory targetName,
537
+ bool checkAuthority,
538
+ bool custom
539
+ )
540
+ internal
541
+ {
542
+ // check target does not yet exist
543
+ if(targetExists(target)) {
544
+ revert ErrorTargetAlreadyCreated(
545
+ target,
546
+ _targetInfo[target].name.toString());
547
+ }
548
+
549
+ // check target name is not empty
550
+ Str name = StrLib.toStr(targetName);
551
+ if(name.length() == 0) {
552
+ revert ErrorTargetNameEmpty(target);
553
+ }
554
+
555
+ // check target name is not used for another target
556
+ if( _targetForName[name] != address(0)) {
557
+ revert ErrorTargetNameAlreadyExists(
558
+ target,
559
+ targetName,
560
+ _targetForName[name]);
561
+ }
562
+
563
+ // check target is an access managed contract
564
+ if (!_isAccessManaged(target)) {
565
+ revert ErrorTargetNotAccessManaged(target);
566
+ }
567
+
568
+ // check target shares authority with this contract
569
+ if (checkAuthority) {
570
+ address targetAuthority = AccessManagedUpgradeable(target).authority();
571
+ if (targetAuthority != authority()) {
572
+ revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
573
+ }
574
+ }
575
+
576
+ // create target info
577
+ _targetInfo[target] = TargetInfo({
578
+ name: name,
579
+ isCustom: custom,
580
+ createdAt: TimestampLib.blockTimestamp()
581
+ });
582
+
583
+ // create name to target mapping
584
+ _targetForName[name] = target;
585
+
586
+ // add role to list of roles
587
+ _targets.push(target);
588
+
589
+ emit LogTargetCreated(target, targetName);
590
+ }
591
+
592
+
593
+ function _isAccessManaged(address target)
594
+ internal
595
+ view
596
+ returns (bool)
597
+ {
598
+ if (!ContractLib.isContract(target)) {
599
+ return false;
600
+ }
601
+
602
+ (bool success, ) = target.staticcall(
603
+ abi.encodeWithSelector(
604
+ IAccessManagedChecker.authority.selector));
605
+
606
+ return success;
607
+ }
608
+
609
+
610
+ function _setTargetClosed(address target, bool locked)
611
+ internal
612
+ {
613
+ _checkTarget(target);
614
+
615
+ // target locked/unlocked already
616
+ if(_authority.isTargetClosed(target) == locked) {
617
+ revert ErrorTargetAlreadyLocked(target, locked);
618
+ }
619
+
620
+ _authority.setTargetClosed(target, locked);
621
+ }
622
+
623
+
624
+ function _checkRoleExists(
625
+ RoleId roleId,
626
+ bool onlyActiveRole
627
+ )
628
+ internal
629
+ view
630
+ {
631
+ if (!roleExists(roleId)) {
632
+ revert ErrorRoleUnknown(roleId);
633
+ }
634
+
635
+ uint64 roleIdInt = RoleId.unwrap(roleId);
636
+ if (roleIdInt == _authority.ADMIN_ROLE())
637
+ // TODO cleanup
638
+ //|| roleIdInt == _authority.PUBLIC_ROLE()) prevents granting of public role
639
+ {
640
+ revert ErrorRoleIsLocked(roleId);
641
+ }
642
+
643
+ // check if role is disabled
644
+ if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.blockTimestamp()) {
645
+ revert ErrorRoleIsPaused(roleId);
646
+ }
647
+ }
648
+
649
+
650
+ /// @dev check if target exists and reverts if it doesn't
651
+ function _checkTarget(address target)
652
+ internal
653
+ view
654
+ {
655
+ if (!targetExists(target)) {
656
+ revert ErrorTargetUnknown(target);
657
+ }
658
+ }
659
+ }