@etherisc/gif-next 0.0.2-e9c5694-914 → 0.0.2-ea09fbf-195

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 (443) hide show
  1. package/README.md +27 -6
  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 +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +103 -55
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +37 -5
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -186
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +154 -108
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -53
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +101 -164
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -290
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +137 -129
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +630 -317
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  62. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +94 -47
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
  67. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -56
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +239 -92
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -197
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +410 -370
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  82. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  83. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  85. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  88. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  92. package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.json +168 -0
  94. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  100. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
  103. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  105. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
  108. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  110. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
  112. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  114. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  116. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
  118. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  120. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
  122. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
  124. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
  126. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
  128. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +104 -78
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  131. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  141. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +143 -3
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  157. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +158 -140
  162. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
  164. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  165. package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
  166. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  168. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  169. package/artifacts/contracts/product/Product.sol/Product.json +163 -175
  170. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  171. package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
  172. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -24
  174. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  176. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +31 -2
  178. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  179. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  180. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  181. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  182. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  183. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/Registry.sol/Registry.json +69 -40
  185. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  186. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -213
  187. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  189. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  191. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  192. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
  193. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  195. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +310 -52
  197. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  199. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  201. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
  203. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +250 -421
  205. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
  207. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  209. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  211. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  217. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
  219. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +134 -248
  221. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
  223. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  229. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  232. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  233. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
  235. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  236. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  237. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  238. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  239. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  241. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  243. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  245. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  247. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  253. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  255. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  256. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
  257. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  258. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +27 -3
  259. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
  261. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  262. package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
  263. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  265. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  266. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
  267. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  269. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
  271. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
  273. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  275. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  276. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  277. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  278. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  280. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  283. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  285. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  287. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  289. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  290. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  291. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  293. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  294. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  295. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  297. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  299. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  301. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  303. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  305. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
  307. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  314. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  316. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  318. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  320. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  322. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  324. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  325. package/contracts/accounting/AccountingService.sol +262 -0
  326. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  327. package/contracts/accounting/IAccountingService.sol +45 -0
  328. package/contracts/authorization/AccessAdmin.sol +136 -73
  329. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  330. package/contracts/authorization/IAccessAdmin.sol +6 -3
  331. package/contracts/distribution/BasicDistribution.sol +6 -6
  332. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  333. package/contracts/distribution/Distribution.sol +32 -30
  334. package/contracts/distribution/DistributionService.sol +34 -32
  335. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  336. package/contracts/distribution/IDistributionService.sol +5 -6
  337. package/contracts/examples/fire/FirePool.sol +22 -5
  338. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
  339. package/contracts/examples/fire/FireProduct.sol +31 -8
  340. package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
  341. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  342. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  343. package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
  344. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  345. package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
  346. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  347. package/contracts/instance/BundleSet.sol +42 -38
  348. package/contracts/instance/IInstance.sol +8 -8
  349. package/contracts/instance/IInstanceService.sol +9 -9
  350. package/contracts/instance/Instance.sol +20 -17
  351. package/contracts/instance/InstanceAdmin.sol +96 -47
  352. package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
  353. package/contracts/instance/InstanceReader.sol +108 -7
  354. package/contracts/instance/InstanceService.sol +73 -82
  355. package/contracts/instance/InstanceServiceManager.sol +1 -1
  356. package/contracts/instance/InstanceStore.sol +13 -2
  357. package/contracts/instance/RiskSet.sol +118 -0
  358. package/contracts/instance/base/ObjectCounter.sol +1 -2
  359. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  360. package/contracts/instance/base/ObjectSet.sol +31 -33
  361. package/contracts/instance/base/ObjectSetHelper.sol +30 -0
  362. package/contracts/instance/module/IComponents.sol +4 -4
  363. package/contracts/instance/module/IPolicy.sol +2 -1
  364. package/contracts/instance/module/IRisk.sol +3 -0
  365. package/contracts/oracle/Oracle.sol +1 -1
  366. package/contracts/oracle/OracleService.sol +92 -73
  367. package/contracts/oracle/OracleServiceManager.sol +1 -1
  368. package/contracts/pool/BasicPool.sol +24 -3
  369. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  370. package/contracts/pool/BundleService.sol +26 -94
  371. package/contracts/pool/BundleServiceManager.sol +1 -1
  372. package/contracts/pool/IBundleService.sol +2 -24
  373. package/contracts/pool/IPoolComponent.sol +1 -7
  374. package/contracts/pool/IPoolService.sol +12 -26
  375. package/contracts/pool/Pool.sol +112 -102
  376. package/contracts/pool/PoolService.sol +171 -100
  377. package/contracts/pool/PoolServiceManager.sol +1 -1
  378. package/contracts/product/ApplicationService.sol +15 -15
  379. package/contracts/product/ApplicationServiceManager.sol +1 -1
  380. package/contracts/product/BasicProduct.sol +9 -11
  381. package/contracts/product/BasicProductAuthorization.sol +1 -2
  382. package/contracts/product/ClaimService.sol +147 -51
  383. package/contracts/product/ClaimServiceManager.sol +1 -1
  384. package/contracts/product/IApplicationService.sol +5 -2
  385. package/contracts/product/IClaimService.sol +13 -0
  386. package/contracts/product/IPolicyService.sol +17 -7
  387. package/contracts/product/IProductComponent.sol +4 -1
  388. package/contracts/product/PolicyService.sol +244 -199
  389. package/contracts/product/PolicyServiceManager.sol +1 -1
  390. package/contracts/product/PricingService.sol +23 -19
  391. package/contracts/product/PricingServiceManager.sol +3 -3
  392. package/contracts/product/Product.sol +47 -39
  393. package/contracts/product/RiskService.sol +78 -23
  394. package/contracts/product/RiskServiceManager.sol +1 -1
  395. package/contracts/registry/ChainNft.sol +4 -2
  396. package/contracts/registry/IRegistry.sol +8 -15
  397. package/contracts/registry/IRelease.sol +26 -0
  398. package/contracts/registry/Registry.sol +12 -3
  399. package/contracts/registry/RegistryAdmin.sol +121 -225
  400. package/contracts/registry/RegistryService.sol +3 -3
  401. package/contracts/registry/RegistryServiceManager.sol +1 -1
  402. package/contracts/registry/ReleaseAdmin.sol +245 -0
  403. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  404. package/contracts/registry/ReleaseRegistry.sol +129 -119
  405. package/contracts/registry/ServiceAuthorizationV3.sol +88 -40
  406. package/contracts/registry/TokenRegistry.sol +6 -8
  407. package/contracts/shared/Component.sol +59 -98
  408. package/contracts/shared/ComponentService.sol +206 -251
  409. package/contracts/shared/ComponentServiceManager.sol +1 -1
  410. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  411. package/contracts/shared/ContractLib.sol +223 -9
  412. package/contracts/shared/IComponent.sol +4 -17
  413. package/contracts/shared/IComponentService.sol +20 -24
  414. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  415. package/contracts/shared/IRegisterable.sol +15 -4
  416. package/contracts/shared/IService.sol +3 -5
  417. package/contracts/shared/InstanceLinkedComponent.sol +2 -18
  418. package/contracts/shared/NftOwnable.sol +4 -4
  419. package/contracts/shared/PolicyHolder.sol +1 -1
  420. package/contracts/shared/Registerable.sol +44 -20
  421. package/contracts/shared/RegistryLinked.sol +7 -13
  422. package/contracts/shared/Service.sol +8 -27
  423. package/contracts/shared/TokenHandler.sol +316 -66
  424. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  425. package/contracts/staking/IStaking.sol +9 -4
  426. package/contracts/staking/Staking.sol +62 -33
  427. package/contracts/staking/StakingService.sol +41 -9
  428. package/contracts/type/Key32.sol +2 -2
  429. package/contracts/type/Key32Set.sol +62 -0
  430. package/contracts/type/NftId.sol +6 -0
  431. package/contracts/type/ObjectType.sol +32 -18
  432. package/contracts/type/RiskId.sol +23 -6
  433. package/contracts/type/RoleId.sol +5 -2
  434. package/contracts/type/Timestamp.sol +0 -5
  435. package/contracts/type/UFixed.sol +9 -119
  436. package/contracts/type/Version.sol +15 -5
  437. package/contracts/upgradeability/ProxyManager.sol +1 -1
  438. package/package.json +3 -3
  439. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  440. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  441. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  442. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  443. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
@@ -8,11 +8,16 @@ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/ut
8
8
  import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
9
9
  import {ContractLib} from "../shared/ContractLib.sol";
10
10
  import {IAccessAdmin} from "./IAccessAdmin.sol";
11
+ import {IRegistry} from "../registry/IRegistry.sol";
11
12
  import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
12
13
  import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
13
14
  import {Str, StrLib} from "../type/String.sol";
14
15
  import {TimestampLib} from "../type/Timestamp.sol";
16
+ import {VersionPart} from "../type/Version.sol";
15
17
 
18
+ interface IAccessManagedChecker {
19
+ function authority() external view returns (address);
20
+ }
16
21
 
17
22
  /**
18
23
  * @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
@@ -68,7 +73,7 @@ contract AccessAdmin is
68
73
 
69
74
  modifier onlyDeployer() {
70
75
  // special case for cloned AccessAdmin contracts
71
- // IMPORTANT cloning and _initializeAuthority needs to be done in a single transaction
76
+ // IMPORTANT cloning and initialize authority needs to be done in a single transaction
72
77
  if (_deployer == address(0)) {
73
78
  _deployer = msg.sender;
74
79
  }
@@ -95,8 +100,15 @@ contract AccessAdmin is
95
100
  _;
96
101
  }
97
102
 
98
- modifier onlyExistingRole(RoleId roleId, bool onlyActiveRole) {
99
- _checkRoleExists(roleId, onlyActiveRole);
103
+ modifier onlyExistingRole(
104
+ RoleId roleId,
105
+ bool onlyActiveRole,
106
+ bool allowLockedRoles
107
+ )
108
+ {
109
+ if (!allowLockedRoles) {
110
+ _checkRoleExists(roleId, onlyActiveRole);
111
+ }
100
112
  _;
101
113
  }
102
114
 
@@ -105,15 +117,90 @@ contract AccessAdmin is
105
117
  _;
106
118
  }
107
119
 
108
- constructor() {
109
- _deployer = msg.sender;
110
- _authority = new AccessManagerCloneable();
111
- _authority.initialize(address(this));
120
+ //-------------- initialization functions ------------------------------//
112
121
 
113
- _setAuthority(address(_authority)); // set authority for oz access managed
114
- _createAdminAndPublicRoles();
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);
115
133
  }
116
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
+
117
204
  //--- view functions for roles ------------------------------------------//
118
205
 
119
206
  function roles() external view returns (uint256 numberOfRoles) {
@@ -152,6 +239,7 @@ contract AccessAdmin is
152
239
  return _roleMembers[roleId].at(idx);
153
240
  }
154
241
 
242
+ // TODO false because not role member or because role not exists?
155
243
  function hasRole(address account, RoleId roleId) public view returns (bool) {
156
244
  (bool isMember, ) = _authority.hasRole(
157
245
  RoleId.unwrap(roleId),
@@ -260,7 +348,11 @@ contract AccessAdmin is
260
348
  bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
261
349
 
262
350
  // apply authz via access manager
263
- _grantRoleAccessToFunctions(target, roleId, functionSelectors);
351
+ _grantRoleAccessToFunctions(
352
+ target,
353
+ roleId,
354
+ functionSelectors,
355
+ false); // allowLockedRoles
264
356
  }
265
357
 
266
358
  function _unauthorizeTargetFunctions(
@@ -271,7 +363,12 @@ contract AccessAdmin is
271
363
  {
272
364
  bool addFunctions = false;
273
365
  bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
274
- _grantRoleAccessToFunctions(target, getAdminRole(), functionSelectors);
366
+
367
+ _grantRoleAccessToFunctions(
368
+ target,
369
+ getAdminRole(),
370
+ functionSelectors,
371
+ true); // allowLockedRoles
275
372
  }
276
373
 
277
374
  function _processFunctionSelectors(
@@ -280,6 +377,7 @@ contract AccessAdmin is
280
377
  bool addFunctions
281
378
  )
282
379
  internal
380
+ onlyExistingTarget(target)
283
381
  returns (
284
382
  bytes4[] memory functionSelectors
285
383
  )
@@ -305,68 +403,16 @@ contract AccessAdmin is
305
403
  }
306
404
  }
307
405
 
308
- function _initializeAuthority(
309
- address authorityAddress
310
- )
311
- internal
312
- virtual
313
- onlyInitializing()
314
- onlyDeployer()
315
- {
316
- if (authority() != address(0)) {
317
- revert ErrorAuthorityAlreadySet();
318
- }
319
-
320
- _authority = AccessManagerCloneable(authorityAddress);
321
- __AccessManaged_init(address(_authority));
322
- }
323
-
324
-
325
- function _initializeAdminAndPublicRoles()
326
- internal
327
- virtual
328
- onlyInitializing()
329
- {
330
- _createAdminAndPublicRoles();
331
- }
332
-
333
-
334
- /// @dev internal setup function that can be used in both constructor and initializer.
335
- function _createAdminAndPublicRoles()
336
- internal
337
- {
338
- RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
339
-
340
- // setup admin role
341
- _createRoleUnchecked(
342
- ADMIN_ROLE(),
343
- toRole({
344
- adminRoleId: ADMIN_ROLE(),
345
- roleType: RoleType.Contract,
346
- maxMemberCount: 1,
347
- name: ADMIN_ROLE_NAME}));
348
-
349
- // add this contract as admin role member
350
- _roleMembers[adminRoleId].add(address(this));
351
-
352
- // setup public role
353
- _createRoleUnchecked(
354
- PUBLIC_ROLE(),
355
- toRole({
356
- adminRoleId: ADMIN_ROLE(),
357
- roleType: RoleType.Gif,
358
- maxMemberCount: type(uint32).max,
359
- name: PUBLIC_ROLE_NAME}));
360
- }
361
-
362
-
363
406
  /// @dev grant the specified role access to all functions in the provided selector list
364
407
  function _grantRoleAccessToFunctions(
365
408
  address target,
366
409
  RoleId roleId,
367
- bytes4[] memory functionSelectors
410
+ bytes4[] memory functionSelectors,
411
+ bool allowLockedRoles // admin and public roles are locked
368
412
  )
369
413
  internal
414
+ onlyExistingTarget(target)
415
+ onlyExistingRole(roleId, true, allowLockedRoles)
370
416
  {
371
417
  _authority.setTargetFunctionRole(
372
418
  target,
@@ -380,7 +426,7 @@ contract AccessAdmin is
380
426
  /// @dev grant the specified role to the provided account
381
427
  function _grantRoleToAccount(RoleId roleId, address account)
382
428
  internal
383
- onlyExistingRole(roleId, true)
429
+ onlyExistingRole(roleId, true, false)
384
430
  {
385
431
  // check max role members will not be exceeded
386
432
  if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
@@ -408,7 +454,7 @@ contract AccessAdmin is
408
454
  /// @dev revoke the specified role from the provided account
409
455
  function _revokeRoleFromAccount(RoleId roleId, address account)
410
456
  internal
411
- onlyExistingRole(roleId, false)
457
+ onlyExistingRole(roleId, false, false)
412
458
  {
413
459
 
414
460
  // check role removal is permitted
@@ -492,7 +538,6 @@ contract AccessAdmin is
492
538
  bool custom
493
539
  )
494
540
  internal
495
- nonReentrant()
496
541
  {
497
542
  // check target does not yet exist
498
543
  if(targetExists(target)) {
@@ -516,7 +561,7 @@ contract AccessAdmin is
516
561
  }
517
562
 
518
563
  // check target is an access managed contract
519
- if (!ContractLib.isAccessManaged(target)) {
564
+ if (!_isAccessManaged(target)) {
520
565
  revert ErrorTargetNotAccessManaged(target);
521
566
  }
522
567
 
@@ -545,6 +590,23 @@ contract AccessAdmin is
545
590
  }
546
591
 
547
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
+
548
610
  function _setTargetClosed(address target, bool locked)
549
611
  internal
550
612
  {
@@ -571,8 +633,9 @@ contract AccessAdmin is
571
633
  }
572
634
 
573
635
  uint64 roleIdInt = RoleId.unwrap(roleId);
574
- if (roleIdInt == _authority.ADMIN_ROLE()
575
- || roleIdInt == _authority.PUBLIC_ROLE())
636
+ if (roleIdInt == _authority.ADMIN_ROLE())
637
+ // TODO cleanup
638
+ //|| roleIdInt == _authority.PUBLIC_ROLE()) prevents granting of public role
576
639
  {
577
640
  revert ErrorRoleIsLocked(roleId);
578
641
  }
@@ -2,15 +2,148 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+ import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
5
7
 
8
+ import {InitializableERC165} from "../shared/InitializableERC165.sol";
9
+ import {RegistryLinked} from "../shared/RegistryLinked.sol";
10
+ import {VersionPart, VersionLib} from "../type/Version.sol";
11
+
12
+
13
+ /// @dev An AccessManager based on OpenZeppelin that is cloneable and has a central lock property.
14
+ /// The lock property allows to lock all services of a release in a central place.
15
+ /// Cloned by upon release preparation and instance cloning.
6
16
  contract AccessManagerCloneable is
7
- AccessManagerUpgradeable
17
+ AccessManagerUpgradeable,
18
+ InitializableERC165,
19
+ RegistryLinked
8
20
  {
21
+ error ErrorAccessManagerCallerNotAdmin(address caller);
22
+ error ErrorAccessManagerRegistryAlreadySet(address registry);
23
+ error ErrorAccessManagerInvalidRelease(VersionPart release);
24
+
25
+ error ErrorAccessManagerTargetAdminLocked(address target);
26
+ error ErrorAccessManagerCallerAdminLocked(address caller);
9
27
 
10
- function initialize(address initialAdmin)
28
+ VersionPart private _release;
29
+ bool private _isLocked;
30
+
31
+ modifier onlyAdminRole() {
32
+ (bool isMember, ) = hasRole(ADMIN_ROLE, msg.sender);
33
+ if(!isMember) {
34
+ revert ErrorAccessManagerCallerNotAdmin(msg.sender);
35
+ }
36
+ _;
37
+ }
38
+
39
+ function initialize(address admin)
11
40
  external
12
41
  initializer()
13
42
  {
14
- __AccessManager_init(initialAdmin);
43
+ __AccessManager_init(admin);
44
+ _initializeERC165();
45
+ _registerInterface(type(IAccessManager).interfaceId);
46
+ }
47
+
48
+
49
+ /// @dev Completes the setup of the access manager.
50
+ /// Links the access manager to the registry and sets the release version.
51
+ function completeSetup(
52
+ address registry,
53
+ VersionPart release
54
+ )
55
+ external
56
+ onlyAdminRole
57
+ reinitializer(uint64(release.toInt()))
58
+ {
59
+ _completeSetup(registry, release, true);
60
+ }
61
+
62
+ /// @dev Completes the setup of the access manager.
63
+ /// Links the access manager to the registry and sets the release version.
64
+ function completeSetup(
65
+ address registry,
66
+ VersionPart release,
67
+ bool verifyRelease
68
+ )
69
+ public
70
+ onlyAdminRole
71
+ reinitializer(uint64(release.toInt()))
72
+ {
73
+ _completeSetup(registry, release, verifyRelease);
74
+ }
75
+
76
+ /// @dev Returns true if the caller is authorized to call the target with the given selector and the manager lock is not set to locked.
77
+ /// Feturn values as in OpenZeppelin AccessManager.
78
+ /// For a locked manager the function reverts with ErrorAccessManagerTargetAdminLocked.
79
+ function canCall(
80
+ address caller,
81
+ address target,
82
+ bytes4 selector
83
+ )
84
+ public
85
+ view
86
+ virtual override
87
+ returns (
88
+ bool immediate,
89
+ uint32 delay
90
+ )
91
+ {
92
+ (immediate, delay) = super.canCall(caller, target, selector);
93
+
94
+ // locking of all contracts under control of this access manager
95
+ if (isLocked()) {
96
+ revert ErrorAccessManagerTargetAdminLocked(target);
97
+ }
98
+ }
99
+
100
+
101
+ /// @dev Locks/unlocks all services of this access manager.
102
+ /// Only the corresponding access admin can lock/unlock the services.
103
+ function setLocked(bool locked)
104
+ external
105
+ onlyAdminRole()
106
+ {
107
+ _isLocked = locked;
108
+ }
109
+
110
+
111
+ /// @dev Returns the release version of this access manager.
112
+ /// For the registry admin release 3 is returned.
113
+ /// For the release admin and the instance admin the actual release version is returned.
114
+ function getRelease() external view returns (VersionPart release) {
115
+ return _release;
116
+ }
117
+
118
+
119
+ /// @dev Returns true iff all contracts of this access manager are locked.
120
+ function isLocked()
121
+ public
122
+ view
123
+ returns (bool)
124
+ {
125
+ return _isLocked;
126
+ }
127
+
128
+
129
+ function _completeSetup(
130
+ address registry,
131
+ VersionPart release,
132
+ bool verifyRelease
133
+ )
134
+ internal
135
+ {
136
+ // checks
137
+ if(address(getRegistry()) != address(0)) {
138
+ revert ErrorAccessManagerRegistryAlreadySet(address(getRegistry()) );
139
+ }
140
+
141
+ if (verifyRelease && !release.isValidRelease()) {
142
+ revert ErrorAccessManagerInvalidRelease(release);
143
+ }
144
+
145
+ // effects
146
+ __RegistryLinked_init(registry);
147
+ _release = release;
15
148
  }
16
149
  }
@@ -4,14 +4,16 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {IAccess} from "./IAccess.sol";
7
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
7
8
  import {RoleId} from "../type/RoleId.sol";
8
9
  import {Selector} from "../type/Selector.sol";
9
10
  import {Str} from "../type/String.sol";
10
- import {Timestamp} from "../type/Timestamp.sol";
11
+ import {VersionPart} from "../type/Version.sol";
11
12
 
12
13
  interface IAccessAdmin is
13
14
  IAccessManaged,
14
- IAccess
15
+ IAccess,
16
+ IRegistryLinked
15
17
  {
16
18
 
17
19
  // roles
@@ -29,7 +31,6 @@ interface IAccessAdmin is
29
31
  error ErrorNotRoleOwner(RoleId roleId);
30
32
 
31
33
  // initialize authority
32
- error ErrorAuthorityAlreadySet();
33
34
  error ErrorAdminRoleMissing();
34
35
 
35
36
  // create role
@@ -106,6 +107,8 @@ interface IAccessAdmin is
106
107
 
107
108
  //--- view functions ----------------------------------------------------//
108
109
 
110
+ function getRelease() external view returns (VersionPart release);
111
+
109
112
  function roles() external view returns (uint256 numberOfRoles);
110
113
  function getRoleId(uint256 idx) external view returns (RoleId roleId);
111
114
  function getAdminRole() external view returns (RoleId roleId);
@@ -44,8 +44,8 @@ contract BasicDistribution is
44
44
  )
45
45
  external
46
46
  virtual
47
- onlyOwner()
48
47
  restricted()
48
+ onlyOwner()
49
49
  returns (DistributorType distributorType)
50
50
  {
51
51
  return _createDistributorType(
@@ -67,25 +67,25 @@ contract BasicDistribution is
67
67
  )
68
68
  external
69
69
  virtual
70
- onlyOwner()
71
70
  restricted()
71
+ onlyOwner()
72
72
  returns(NftId distributorNftId)
73
73
  {
74
74
  return _createDistributor(distributor, distributorType, data);
75
75
  }
76
76
 
77
- function updateDistributorType(
77
+ function changeDistributorType(
78
78
  NftId distributorNftId,
79
79
  DistributorType distributorType,
80
80
  bytes memory data
81
81
  )
82
82
  external
83
83
  virtual
84
+ restricted()
84
85
  onlyOwner()
85
86
  onlyNftOfType(distributorNftId, DISTRIBUTOR())
86
- restricted()
87
87
  {
88
- _updateDistributorType(distributorNftId, distributorType, data);
88
+ _changeDistributorType(distributorNftId, distributorType, data);
89
89
  }
90
90
 
91
91
  /**
@@ -101,8 +101,8 @@ contract BasicDistribution is
101
101
  )
102
102
  external
103
103
  virtual
104
- onlyDistributor()
105
104
  restricted()
105
+ onlyDistributor()
106
106
  returns (ReferralId referralId)
107
107
  {
108
108
  NftId distributorNftId = getDistributorNftId(msg.sender);
@@ -37,7 +37,7 @@ contract BasicDistributionAuthorization
37
37
  _authorize(functions, BasicDistribution.setFees.selector, "setFees");
38
38
  _authorize(functions, BasicDistribution.createDistributorType.selector, "createDistributorType");
39
39
  _authorize(functions, BasicDistribution.createDistributor.selector, "createDistributor");
40
- _authorize(functions, BasicDistribution.updateDistributorType.selector, "updateDistributorType");
40
+ _authorize(functions, BasicDistribution.changeDistributorType.selector, "changeDistributorType");
41
41
  _authorize(functions, BasicDistribution.createReferral.selector, "createReferral");
42
42
 
43
43
  _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
@@ -37,6 +37,32 @@ abstract contract Distribution is
37
37
  }
38
38
 
39
39
 
40
+ function processRenewal(
41
+ ReferralId referralId,
42
+ uint256 feeAmount
43
+ )
44
+ external
45
+ virtual
46
+ restricted()
47
+ {
48
+ // default is no action
49
+ }
50
+
51
+
52
+ /// @inheritdoc IDistributionComponent
53
+ function withdrawCommission(NftId distributorNftId, Amount amount)
54
+ external
55
+ virtual
56
+ restricted()
57
+ onlyDistributor()
58
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
59
+ onlyNftOwner(distributorNftId)
60
+ returns (Amount withdrawnAmount)
61
+ {
62
+ return _withdrawCommission(distributorNftId, amount);
63
+ }
64
+
65
+
40
66
  function isDistributor(address candidate)
41
67
  public
42
68
  view
@@ -97,35 +123,12 @@ abstract contract Distribution is
97
123
  }
98
124
 
99
125
 
100
- function processRenewal(
101
- ReferralId referralId,
102
- uint256 feeAmount
103
- )
104
- external
105
- virtual
106
- restricted()
107
- {
108
- // default is no action
109
- }
110
-
111
126
  /// @dev Returns true iff the component needs to be called when selling/renewing policis
112
127
  function isVerifying() external pure returns (bool verifying) {
113
128
  return true;
114
129
  }
115
130
 
116
- /// @inheritdoc IDistributionComponent
117
- function withdrawCommission(NftId distributorNftId, Amount amount)
118
- external
119
- virtual
120
- restricted()
121
- onlyDistributor()
122
- onlyNftOfType(distributorNftId, DISTRIBUTOR())
123
- onlyNftOwner(distributorNftId)
124
- returns (Amount withdrawnAmount)
125
- {
126
- return _withdrawCommission(distributorNftId, amount);
127
- }
128
-
131
+
129
132
  function _initializeDistribution(
130
133
  address registry,
131
134
  NftId productNftId,
@@ -223,7 +226,7 @@ abstract contract Distribution is
223
226
  }
224
227
 
225
228
  /// @dev Uptates the distributor type for the specified distributor.
226
- function _updateDistributorType(
229
+ function _changeDistributorType(
227
230
  NftId distributorNftId,
228
231
  DistributorType distributorType,
229
232
  bytes memory data
@@ -232,11 +235,10 @@ abstract contract Distribution is
232
235
  virtual
233
236
  {
234
237
  DistributionStorage storage $ = _getDistributionStorage();
235
- // TODO re-enable once implemented
236
- // $._distributionService.updateDistributorType(
237
- // distributorNftId,
238
- // distributorType,
239
- // data);
238
+ $._distributionService.changeDistributorType(
239
+ distributorNftId,
240
+ distributorType,
241
+ data);
240
242
  }
241
243
 
242
244
  /// @dev Create a new referral code for the provided distributor.