@etherisc/gif-next 0.0.2-ff1bf36-818 → 0.0.2-ff795d8-141

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 (521) hide show
  1. package/README.md +82 -8
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -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 +658 -259
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1279 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
  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 +507 -206
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +177 -441
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +96 -325
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +473 -326
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +187 -125
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +90 -167
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +287 -101
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1461 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2018 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1404 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1628 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2405 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +505 -65
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +255 -57
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +510 -162
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1010 -334
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1471 -466
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +272 -231
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +106 -106
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +897 -638
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +129 -317
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
  108. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +104 -116
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +105 -269
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +169 -190
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +140 -98
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +145 -309
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +180 -369
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +124 -134
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +90 -117
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +135 -158
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +318 -306
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +133 -308
  135. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +538 -0
  137. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +538 -557
  139. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +177 -111
  141. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +206 -163
  143. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +124 -98
  145. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +267 -370
  147. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
  149. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +423 -242
  151. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +158 -124
  153. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +131 -9
  155. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +293 -17
  157. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +245 -64
  159. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +157 -83
  161. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +258 -209
  163. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +86 -6
  165. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +366 -288
  167. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  169. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +152 -122
  171. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.json +242 -332
  173. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +126 -140
  175. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  176. package/artifacts/contracts/product/Product.sol/Product.json +259 -362
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.json +169 -176
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +129 -95
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +342 -42
  185. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  187. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  189. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  191. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.json +548 -103
  193. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +763 -382
  195. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +104 -90
  201. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2140 -0
  203. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  205. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +487 -253
  207. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
  209. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  211. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Component.sol/Component.json +81 -227
  213. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +430 -623
  215. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +143 -131
  217. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +680 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  227. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +81 -75
  229. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +394 -300
  231. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +104 -116
  233. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  235. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  236. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  237. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  238. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  239. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  241. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  243. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  246. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  247. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  248. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  249. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +104 -268
  250. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  251. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  252. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  253. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  254. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  255. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  256. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  257. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  258. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  259. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  260. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  262. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  263. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  264. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  270. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  272. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  273. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +197 -118
  274. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  275. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +155 -23
  276. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  277. package/artifacts/contracts/staking/Staking.sol/Staking.json +300 -337
  278. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  279. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  280. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  282. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +142 -103
  284. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +41 -73
  286. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +224 -171
  288. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +121 -95
  290. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +205 -150
  292. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  293. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +91 -50
  294. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  295. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Amount.sol/AmountLib.json +35 -11
  297. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  300. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  302. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  304. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  306. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  307. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  308. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  310. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  311. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  312. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  314. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  316. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  318. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  320. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  322. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  324. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  326. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  328. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  330. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  332. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  335. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
  337. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  339. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  341. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  342. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  343. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -80
  344. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  345. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  346. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  347. package/contracts/accounting/AccountingService.sol +261 -0
  348. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  349. package/contracts/accounting/IAccountingService.sol +45 -0
  350. package/contracts/authorization/AccessAdmin.sol +464 -266
  351. package/contracts/authorization/AccessAdminLib.sol +387 -0
  352. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  353. package/contracts/authorization/Authorization.sol +159 -202
  354. package/contracts/authorization/IAccess.sol +25 -6
  355. package/contracts/authorization/IAccessAdmin.sol +80 -79
  356. package/contracts/authorization/IAuthorization.sol +9 -36
  357. package/contracts/authorization/IServiceAuthorization.sol +57 -17
  358. package/contracts/authorization/ServiceAuthorization.sol +254 -24
  359. package/contracts/distribution/BasicDistribution.sol +20 -17
  360. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  361. package/contracts/distribution/Distribution.sol +39 -89
  362. package/contracts/distribution/DistributionService.sol +235 -115
  363. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  364. package/contracts/distribution/IDistributionComponent.sol +4 -11
  365. package/contracts/distribution/IDistributionService.sol +40 -26
  366. package/contracts/examples/fire/DamageLevel.sol +59 -0
  367. package/contracts/examples/fire/FirePool.sol +86 -0
  368. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  369. package/contracts/examples/fire/FireProduct.sol +433 -0
  370. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  371. package/contracts/examples/fire/FireUSD.sol +26 -0
  372. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  373. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  374. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  375. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  376. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  377. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  378. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  379. package/contracts/instance/BundleSet.sol +42 -38
  380. package/contracts/instance/IInstance.sol +96 -17
  381. package/contracts/instance/IInstanceService.sol +49 -31
  382. package/contracts/instance/Instance.sol +181 -69
  383. package/contracts/instance/InstanceAdmin.sol +279 -184
  384. package/contracts/instance/InstanceAuthorizationV3.sol +117 -58
  385. package/contracts/instance/InstanceReader.sol +365 -68
  386. package/contracts/instance/InstanceService.sol +271 -208
  387. package/contracts/instance/InstanceServiceManager.sol +6 -7
  388. package/contracts/instance/InstanceStore.sol +23 -2
  389. package/contracts/instance/RiskSet.sol +118 -0
  390. package/contracts/instance/base/ObjectCounter.sol +1 -2
  391. package/contracts/instance/base/ObjectLifecycle.sol +10 -2
  392. package/contracts/instance/base/ObjectSet.sol +31 -33
  393. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  394. package/contracts/instance/module/IBundle.sol +6 -5
  395. package/contracts/instance/module/IComponents.sol +29 -13
  396. package/contracts/instance/module/IDistribution.sol +21 -8
  397. package/contracts/instance/module/IPolicy.sol +49 -28
  398. package/contracts/instance/module/IRisk.sol +5 -0
  399. package/contracts/oracle/BasicOracle.sol +1 -4
  400. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  401. package/contracts/oracle/IOracle.sol +9 -4
  402. package/contracts/oracle/IOracleService.sol +2 -1
  403. package/contracts/oracle/Oracle.sol +7 -19
  404. package/contracts/oracle/OracleService.sol +117 -85
  405. package/contracts/oracle/OracleServiceManager.sol +6 -6
  406. package/contracts/pool/BasicPool.sol +32 -25
  407. package/contracts/pool/BasicPoolAuthorization.sol +33 -9
  408. package/contracts/pool/BundleService.sol +93 -134
  409. package/contracts/pool/BundleServiceManager.sol +6 -6
  410. package/contracts/pool/IBundleService.sol +15 -34
  411. package/contracts/pool/IPoolComponent.sol +19 -15
  412. package/contracts/pool/IPoolService.sol +73 -71
  413. package/contracts/pool/Pool.sol +139 -124
  414. package/contracts/pool/PoolLib.sol +353 -0
  415. package/contracts/pool/PoolService.sol +332 -286
  416. package/contracts/pool/PoolServiceManager.sol +4 -4
  417. package/contracts/product/ApplicationService.sol +54 -26
  418. package/contracts/product/ApplicationServiceManager.sol +4 -4
  419. package/contracts/product/BasicProduct.sol +10 -13
  420. package/contracts/product/BasicProductAuthorization.sol +30 -12
  421. package/contracts/product/ClaimService.sol +372 -150
  422. package/contracts/product/ClaimServiceManager.sol +4 -4
  423. package/contracts/product/IApplicationService.sol +8 -2
  424. package/contracts/product/IClaimService.sol +43 -8
  425. package/contracts/product/IPolicyService.sol +39 -28
  426. package/contracts/product/IPricingService.sol +11 -10
  427. package/contracts/product/IProductComponent.sol +27 -5
  428. package/contracts/product/IRiskService.sol +7 -7
  429. package/contracts/product/PolicyService.sol +365 -309
  430. package/contracts/product/PolicyServiceLib.sol +139 -0
  431. package/contracts/product/PolicyServiceManager.sol +4 -4
  432. package/contracts/product/PricingService.sol +64 -59
  433. package/contracts/product/PricingServiceManager.sol +4 -4
  434. package/contracts/product/Product.sol +142 -85
  435. package/contracts/product/RiskService.sol +91 -34
  436. package/contracts/product/RiskServiceManager.sol +4 -4
  437. package/contracts/registry/ChainNft.sol +72 -40
  438. package/contracts/registry/IRegistry.sol +64 -28
  439. package/contracts/registry/IRegistryService.sol +5 -12
  440. package/contracts/registry/IRelease.sol +29 -0
  441. package/contracts/registry/ITransferInterceptor.sol +1 -2
  442. package/contracts/registry/Registry.sol +357 -203
  443. package/contracts/registry/RegistryAdmin.sol +110 -296
  444. package/contracts/registry/RegistryAuthorization.sol +277 -0
  445. package/contracts/registry/RegistryService.sol +37 -48
  446. package/contracts/registry/RegistryServiceManager.sol +3 -3
  447. package/contracts/registry/ReleaseAdmin.sol +195 -0
  448. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  449. package/contracts/registry/ReleaseRegistry.sol +275 -240
  450. package/contracts/registry/ServiceAuthorizationV3.sol +200 -57
  451. package/contracts/registry/TokenRegistry.sol +12 -13
  452. package/contracts/shared/Component.sol +66 -124
  453. package/contracts/shared/ComponentService.sol +395 -375
  454. package/contracts/shared/ComponentServiceManager.sol +8 -5
  455. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  456. package/contracts/shared/ContractLib.sol +357 -0
  457. package/contracts/shared/IComponent.sol +5 -17
  458. package/contracts/shared/IComponentService.sol +42 -40
  459. package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
  460. package/contracts/shared/ILifecycle.sol +3 -1
  461. package/contracts/shared/INftOwnable.sol +2 -0
  462. package/contracts/shared/IPolicyHolder.sol +12 -22
  463. package/contracts/shared/IRegisterable.sol +23 -1
  464. package/contracts/shared/IService.sol +3 -5
  465. package/contracts/shared/InitializableERC165.sol +10 -2
  466. package/contracts/shared/InstanceLinkedComponent.sol +72 -50
  467. package/contracts/shared/KeyValueStore.sol +1 -1
  468. package/contracts/shared/Lifecycle.sol +15 -4
  469. package/contracts/shared/NftOwnable.sol +29 -9
  470. package/contracts/shared/PolicyHolder.sol +15 -52
  471. package/contracts/shared/Registerable.sol +52 -21
  472. package/contracts/shared/RegistryLinked.sol +9 -14
  473. package/contracts/shared/Service.sol +20 -35
  474. package/contracts/shared/TokenHandler.sol +275 -72
  475. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  476. package/contracts/staking/IStaking.sol +25 -13
  477. package/contracts/staking/IStakingService.sol +19 -4
  478. package/contracts/staking/Staking.sol +101 -52
  479. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +96 -21
  480. package/contracts/staking/StakingManager.sol +8 -6
  481. package/contracts/staking/StakingReader.sol +18 -21
  482. package/contracts/staking/StakingService.sol +85 -25
  483. package/contracts/staking/StakingServiceManager.sol +6 -5
  484. package/contracts/staking/StakingStore.sol +2 -1
  485. package/contracts/staking/TargetManagerLib.sol +8 -4
  486. package/contracts/type/Amount.sol +15 -0
  487. package/contracts/type/ClaimId.sol +6 -1
  488. package/contracts/type/Fee.sol +8 -8
  489. package/contracts/type/Key32.sol +2 -2
  490. package/contracts/type/Key32Set.sol +62 -0
  491. package/contracts/type/NftId.sol +7 -0
  492. package/contracts/type/ObjectType.sol +72 -36
  493. package/contracts/type/PayoutId.sol +10 -10
  494. package/contracts/type/RiskId.sol +38 -6
  495. package/contracts/type/RoleId.sol +61 -55
  496. package/contracts/type/Seconds.sol +8 -0
  497. package/contracts/type/Selector.sol +5 -0
  498. package/contracts/type/StateId.sol +15 -1
  499. package/contracts/type/Timestamp.sol +0 -5
  500. package/contracts/type/UFixed.sol +37 -126
  501. package/contracts/type/Version.sol +54 -5
  502. package/contracts/upgradeability/ProxyManager.sol +79 -43
  503. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
  504. package/contracts/upgradeability/Versionable.sol +6 -3
  505. package/package.json +5 -4
  506. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  507. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  508. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  509. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  510. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  511. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  512. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  513. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  514. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  515. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -387
  516. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  517. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  518. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  519. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  520. package/contracts/instance/module/IAccess.sol +0 -46
  521. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -0,0 +1,277 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccess} from "../authorization/IAccess.sol";
5
+ import {IRegistry} from "../registry/IRegistry.sol";
6
+ import {IStaking} from "../staking/IStaking.sol";
7
+
8
+ import {Authorization} from "../authorization/Authorization.sol";
9
+ import {POOL, REGISTRY, STAKING} from "../../contracts/type/ObjectType.sol";
10
+ import {PUBLIC_ROLE} from "../type/RoleId.sol";
11
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
12
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
13
+ import {RoleIdLib, ADMIN_ROLE, GIF_ADMIN_ROLE, GIF_MANAGER_ROLE} from "../type/RoleId.sol";
14
+ import {StakingStore} from "../staking/StakingStore.sol";
15
+ import {TokenHandler} from "../shared/TokenHandler.sol";
16
+ import {TokenRegistry} from "../registry/TokenRegistry.sol";
17
+ import {VersionPartLib} from "../type/Version.sol";
18
+
19
+
20
+ contract RegistryAuthorization
21
+ is Authorization
22
+ {
23
+
24
+ /// @dev gif core roles
25
+ string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
26
+ string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
27
+ string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
28
+ string public constant STAKING_ROLE_NAME = "StakingRole";
29
+
30
+ /// @dev gif roles for external contracts
31
+ string public constant REGISTRY_SERVICE_ROLE_NAME = "RegistryServiceRole";
32
+ string public constant COMPONENT_SERVICE_ROLE_NAME = "ComponentServiceRole";
33
+ string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
34
+ string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
35
+
36
+ /// @dev gif core targets
37
+ string public constant REGISTRY_ADMIN_TARGET_NAME = "RegistryAdmin";
38
+ string public constant REGISTRY_TARGET_NAME = "Registry";
39
+ string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
40
+ string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
41
+
42
+ string public constant STAKING_TARGET_NAME = "Staking";
43
+ string public constant STAKING_TH_TARGET_NAME = "StakingTh";
44
+ string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
45
+
46
+ constructor(string memory commitHash)
47
+ Authorization(
48
+ REGISTRY_TARGET_NAME,
49
+ REGISTRY(),
50
+ 3,
51
+ commitHash,
52
+ false, // isComponent
53
+ false) // includeTokenHandler
54
+ { }
55
+
56
+ /// @dev Sets up the GIF admin and manager roles.
57
+ function _setupRoles() internal override {
58
+
59
+ // max number of versioned contracts per generic service
60
+ uint32 maxReleases = uint32(VersionPartLib.releaseMax().toInt());
61
+
62
+ // service roles (for all releases)
63
+ _addRole(
64
+ RoleIdLib.toGenericServiceRoleId(REGISTRY()),
65
+ _toRoleInfo({
66
+ adminRoleId: ADMIN_ROLE(),
67
+ roleType: RoleType.Core,
68
+ maxMemberCount: maxReleases,
69
+ name: REGISTRY_SERVICE_ROLE_NAME}));
70
+
71
+ _addRole(
72
+ RoleIdLib.toGenericServiceRoleId(STAKING()),
73
+ _toRoleInfo({
74
+ adminRoleId: ADMIN_ROLE(),
75
+ roleType: RoleType.Core,
76
+ maxMemberCount: maxReleases,
77
+ name: STAKING_SERVICE_ROLE_NAME}));
78
+
79
+ _addRole(
80
+ RoleIdLib.toGenericServiceRoleId(POOL()),
81
+ _toRoleInfo({
82
+ adminRoleId: ADMIN_ROLE(),
83
+ roleType: RoleType.Core,
84
+ maxMemberCount: maxReleases,
85
+ name: POOL_SERVICE_ROLE_NAME}));
86
+
87
+ // gif admin role
88
+ _addRole(
89
+ GIF_ADMIN_ROLE(),
90
+ _toRoleInfo({
91
+ adminRoleId: ADMIN_ROLE(),
92
+ roleType: RoleType.Core,
93
+ maxMemberCount: 2, // TODO decide on max member count
94
+ name: GIF_ADMIN_ROLE_NAME}));
95
+
96
+ // gif manager role
97
+ _addRole(
98
+ GIF_MANAGER_ROLE(),
99
+ _toRoleInfo({
100
+ adminRoleId: ADMIN_ROLE(),
101
+ roleType: RoleType.Core,
102
+ maxMemberCount: 1, // TODO decide on max member count
103
+ name: GIF_MANAGER_ROLE_NAME}));
104
+
105
+ }
106
+
107
+ /// @dev Sets up the relevant (non-service) targets for the registry.
108
+ function _setupTargets() internal override {
109
+ _addGifTarget(REGISTRY_ADMIN_TARGET_NAME);
110
+ _addGifTarget(RELEASE_REGISTRY_TARGET_NAME);
111
+ _addGifTarget(TOKEN_REGISTRY_TARGET_NAME);
112
+
113
+ _addGifTarget(STAKING_TARGET_NAME);
114
+ _addGifTarget(STAKING_TH_TARGET_NAME);
115
+ _addGifTarget(STAKING_STORE_TARGET_NAME);
116
+ }
117
+
118
+
119
+ function _setupTargetAuthorizations()
120
+ internal
121
+ override
122
+ {
123
+ // registry
124
+ _setupRegistryAuthorization();
125
+ _setupRegistryAdminAuthorization();
126
+ _setupReleaseRegistryAuthorization();
127
+ _setupTokenRegistryAuthorization();
128
+
129
+ // staking
130
+ _setupStakingAuthorization();
131
+ _setupStakingThAuthorization();
132
+ _setupStakingStoreAuthorization();
133
+ }
134
+
135
+ event LogAccessAdminDebug(string message, string custom, uint256 value);
136
+
137
+ function _setupRegistryAuthorization() internal {
138
+ IAccess.FunctionInfo[] storage functions;
139
+
140
+ // gif admin role
141
+ functions = _authorizeForTarget(REGISTRY_TARGET_NAME, GIF_ADMIN_ROLE());
142
+ _authorize(functions, IRegistry.registerRegistry.selector, "registerRegistry");
143
+
144
+ // registry service role
145
+ functions = _authorizeForTarget(
146
+ REGISTRY_TARGET_NAME,
147
+ RoleIdLib.toGenericServiceRoleId(REGISTRY()));
148
+
149
+ _authorize(functions, IRegistry.register.selector, "register");
150
+ _authorize(functions, IRegistry.registerWithCustomType.selector, "registerWithCustomType");
151
+
152
+ // release registry role
153
+ functions = _authorizeForTarget(
154
+ REGISTRY_TARGET_NAME,
155
+ getTargetRole(getTarget(RELEASE_REGISTRY_TARGET_NAME)));
156
+
157
+ _authorize(functions, IRegistry.registerService.selector, "registerService");
158
+ }
159
+
160
+
161
+ function _setupRegistryAdminAuthorization() internal {
162
+ IAccess.FunctionInfo[] storage functions;
163
+
164
+ // release registry role
165
+ functions = _authorizeForTarget(
166
+ REGISTRY_ADMIN_TARGET_NAME,
167
+ getTargetRole(getTarget(RELEASE_REGISTRY_TARGET_NAME)));
168
+
169
+ _authorize(functions, RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
170
+ }
171
+
172
+
173
+ function _setupReleaseRegistryAuthorization() internal {
174
+ IAccess.FunctionInfo[] storage functions;
175
+
176
+ functions = _authorizeForTarget(RELEASE_REGISTRY_TARGET_NAME, GIF_ADMIN_ROLE());
177
+ _authorize(functions, ReleaseRegistry.createNextRelease.selector, "createNextRelease");
178
+ _authorize(functions, ReleaseRegistry.activateNextRelease.selector, "activateNextRelease");
179
+ _authorize(functions, ReleaseRegistry.setActive.selector, "setActive");
180
+
181
+ functions = _authorizeForTarget(RELEASE_REGISTRY_TARGET_NAME, GIF_MANAGER_ROLE());
182
+ _authorize(functions, ReleaseRegistry.prepareNextRelease.selector, "prepareNextRelease");
183
+ _authorize(functions, ReleaseRegistry.registerService.selector, "registerService");
184
+ }
185
+
186
+
187
+ function _setupTokenRegistryAuthorization() internal {
188
+ IAccess.FunctionInfo[] storage functions;
189
+
190
+ // gif manager role
191
+ functions = _authorizeForTarget(TOKEN_REGISTRY_TARGET_NAME, GIF_MANAGER_ROLE());
192
+ _authorize(functions, TokenRegistry.registerToken.selector, "registerToken");
193
+ _authorize(functions, TokenRegistry.registerRemoteToken.selector, "registerRemoteToken");
194
+ _authorize(functions, TokenRegistry.setActive.selector, "setActive");
195
+ _authorize(functions, TokenRegistry.setActiveForVersion.selector, "setActiveForVersion");
196
+ // TODO find a better way (only needed for testing)
197
+ _authorize(functions, TokenRegistry.setActiveWithVersionCheck.selector, "setActiveWithVersionCheck");
198
+ }
199
+
200
+
201
+ function _setupStakingAuthorization() internal {
202
+ IAccess.FunctionInfo[] storage functions;
203
+
204
+ // staking public role
205
+ functions = _authorizeForTarget(
206
+ STAKING_TARGET_NAME,
207
+ PUBLIC_ROLE());
208
+
209
+ _authorize(functions, IStaking.approveTokenHandler.selector, "approveTokenHandler");
210
+
211
+ // staking service role
212
+ functions = _authorizeForTarget(
213
+ STAKING_TARGET_NAME,
214
+ RoleIdLib.toGenericServiceRoleId(STAKING()));
215
+
216
+ _authorize(functions, IStaking.registerTarget.selector, "registerTarget");
217
+ _authorize(functions, IStaking.setLockingPeriod.selector, "setLockingPeriod");
218
+ _authorize(functions, IStaking.setRewardRate.selector, "setRewardRate");
219
+ _authorize(functions, IStaking.setMaxStakedAmount.selector, "setMaxStakedAmount");
220
+ _authorize(functions, IStaking.refillRewardReserves.selector, "refillRewardReserves");
221
+ _authorize(functions, IStaking.withdrawRewardReserves.selector, "withdrawRewardReserves");
222
+ _authorize(functions, IStaking.createStake.selector, "createStake");
223
+ _authorize(functions, IStaking.stake.selector, "stake");
224
+ _authorize(functions, IStaking.unstake.selector, "unstake");
225
+ _authorize(functions, IStaking.restake.selector, "restake");
226
+ _authorize(functions, IStaking.updateRewards.selector, "updateRewards");
227
+ _authorize(functions, IStaking.claimRewards.selector, "claimRewards");
228
+
229
+ // pool service role
230
+ functions = _authorizeForTarget(
231
+ STAKING_TARGET_NAME,
232
+ RoleIdLib.toGenericServiceRoleId(POOL()));
233
+
234
+ _authorize(functions, IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
235
+ _authorize(functions, IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
236
+ }
237
+
238
+
239
+ function _setupStakingThAuthorization() internal {
240
+ IAccess.FunctionInfo[] storage functions;
241
+
242
+ // staking service role
243
+ functions = _authorizeForTarget(
244
+ STAKING_TH_TARGET_NAME,
245
+ RoleIdLib.toGenericServiceRoleId(STAKING()));
246
+
247
+ _authorize(functions, TokenHandler.approve.selector, "approve");
248
+ _authorize(functions, TokenHandler.pullToken.selector, "pullToken");
249
+ _authorize(functions, TokenHandler.pushToken.selector, "pushToken");
250
+ }
251
+
252
+
253
+ function _setupStakingStoreAuthorization() internal {
254
+ IAccess.FunctionInfo[] storage functions;
255
+
256
+ // release registry role
257
+ functions = _authorizeForTarget(
258
+ STAKING_STORE_TARGET_NAME,
259
+ getTargetRole(getTarget(STAKING_TARGET_NAME)));
260
+
261
+ _authorize(functions, StakingStore.setStakingRate.selector, "setStakingRate");
262
+ _authorize(functions, StakingStore.createTarget.selector, "createTarget");
263
+ _authorize(functions, StakingStore.updateTarget.selector, "updateTarget");
264
+ _authorize(functions, StakingStore.increaseReserves.selector, "increaseReserves");
265
+ _authorize(functions, StakingStore.decreaseReserves.selector, "decreaseReserves");
266
+ _authorize(functions, StakingStore.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
267
+ _authorize(functions, StakingStore.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
268
+ _authorize(functions, StakingStore.create.selector, "create");
269
+ _authorize(functions, StakingStore.update.selector, "update");
270
+ _authorize(functions, StakingStore.increaseStake.selector, "increaseStake");
271
+ _authorize(functions, StakingStore.restakeRewards.selector, "restakeRewards");
272
+ _authorize(functions, StakingStore.updateRewards.selector, "updateRewards");
273
+ _authorize(functions, StakingStore.claimUpTo.selector, "claimUpTo");
274
+ _authorize(functions, StakingStore.unstakeUpTo.selector, "unstakeUpTo");
275
+ }
276
+ }
277
+
@@ -18,8 +18,6 @@ contract RegistryService is
18
18
  Service,
19
19
  IRegistryService
20
20
  {
21
- using NftIdLib for NftId;
22
-
23
21
  // TODO update to real hash when registry is stable
24
22
  bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
25
23
 
@@ -35,12 +33,12 @@ contract RegistryService is
35
33
  initializer()
36
34
  {
37
35
  (
38
- address registryAddress,
39
- address initialAuthority
36
+ address authority,
37
+ address registry
40
38
  ) = abi.decode(data, (address, address));
41
39
 
42
- initializeService(registryAddress, initialAuthority, owner);
43
- registerInterface(type(IRegistryService).interfaceId);
40
+ __Service_init(authority, registry, owner);
41
+ _registerInterface(type(IRegistryService).interfaceId);
44
42
  }
45
43
 
46
44
 
@@ -60,7 +58,7 @@ contract RegistryService is
60
58
  function registerInstance(IRegisterable instance, address owner)
61
59
  external
62
60
  virtual
63
- restricted
61
+ restricted()
64
62
  returns(
65
63
  IRegistry.ObjectInfo memory info
66
64
  )
@@ -75,29 +73,33 @@ contract RegistryService is
75
73
  instance.linkToRegisteredNftId(); // asume safe
76
74
  }
77
75
 
78
- function registerProduct(IComponent product, address owner)
76
+ function registerProduct(
77
+ IComponent product,
78
+ address initialOwner
79
+ )
79
80
  external
80
- restricted
81
+ virtual
82
+ restricted()
81
83
  returns(
82
84
  IRegistry.ObjectInfo memory info
83
85
  )
84
86
  {
85
- // CAN revert if no ERC165 support -> will revert with empty message
86
87
  if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
87
88
  revert ErrorRegistryServiceNotProduct(address(product));
88
89
  }
89
90
 
90
- info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
91
+ info = _getAndVerifyContractInfo(product, PRODUCT(), initialOwner);
91
92
  info.nftId = getRegistry().register(info);
92
93
  }
93
94
 
94
- function registerComponent(
95
+ function registerProductLinkedComponent(
95
96
  IComponent component,
96
97
  ObjectType objectType,
97
98
  address initialOwner
98
99
  )
99
100
  external
100
- restricted
101
+ virtual
102
+ restricted()
101
103
  returns(
102
104
  IRegistry.ObjectInfo memory info
103
105
  )
@@ -107,43 +109,18 @@ contract RegistryService is
107
109
  revert ErrorRegistryServiceNotComponent(address(component));
108
110
  }
109
111
 
110
- info = _getAndVerifyContractInfo(component, objectType, initialOwner);
111
- info.nftId = getRegistry().register(info);
112
- }
113
-
114
- function registerPool(IComponent pool, address owner)
115
- external
116
- restricted
117
- returns(
118
- IRegistry.ObjectInfo memory info
119
- )
120
- {
121
- if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
122
- revert ErrorRegistryServiceNotPool(address(pool));
123
- }
124
-
125
- info = _getAndVerifyContractInfo(pool, POOL(), owner);
126
- info.nftId = getRegistry().register(info);
127
- }
128
-
129
- function registerDistribution(IComponent distribution, address owner)
130
- external
131
- restricted
132
- returns(
133
- IRegistry.ObjectInfo memory info
134
- )
135
- {
136
- if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
137
- revert ErrorRegistryServiceNotDistribution(address(distribution));
112
+ if (!(objectType == DISTRIBUTION() || objectType == ORACLE() || objectType == POOL())) {
113
+ revert ErrorRegistryServiceNotProductLinkedComponent(address(component));
138
114
  }
139
115
 
140
- info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
116
+ info = _getAndVerifyContractInfo(component, objectType, initialOwner);
141
117
  info.nftId = getRegistry().register(info);
142
118
  }
143
119
 
144
120
  function registerDistributor(IRegistry.ObjectInfo memory info)
145
121
  external
146
- restricted
122
+ virtual
123
+ restricted()
147
124
  returns(NftId nftId)
148
125
  {
149
126
  _verifyObjectInfo(info, DISTRIBUTOR());
@@ -152,7 +129,8 @@ contract RegistryService is
152
129
 
153
130
  function registerPolicy(IRegistry.ObjectInfo memory info)
154
131
  external
155
- restricted
132
+ virtual
133
+ restricted()
156
134
  returns(NftId nftId)
157
135
  {
158
136
  _verifyObjectInfo(info, POLICY());
@@ -161,7 +139,8 @@ contract RegistryService is
161
139
 
162
140
  function registerBundle(IRegistry.ObjectInfo memory info)
163
141
  external
164
- restricted
142
+ virtual
143
+ restricted()
165
144
  returns(NftId nftId)
166
145
  {
167
146
  _verifyObjectInfo(info, BUNDLE());
@@ -170,7 +149,8 @@ contract RegistryService is
170
149
 
171
150
  function registerStake(IRegistry.ObjectInfo memory info)
172
151
  external
173
- restricted
152
+ virtual
153
+ restricted()
174
154
  returns(NftId nftId)
175
155
  {
176
156
  _verifyObjectInfo(info, STAKE());
@@ -185,6 +165,7 @@ contract RegistryService is
185
165
  address expectedOwner // assume can be 0 when given by other service
186
166
  )
187
167
  internal
168
+ virtual
188
169
  view
189
170
  returns(
190
171
  IRegistry.ObjectInfo memory info
@@ -224,6 +205,7 @@ contract RegistryService is
224
205
  ObjectType expectedType
225
206
  )
226
207
  internal
208
+ virtual
227
209
  view
228
210
  {
229
211
  if(info.objectAddress > address(0)) {
@@ -240,8 +222,15 @@ contract RegistryService is
240
222
  revert ErrorRegistryServiceObjectOwnerZero(info.objectType);
241
223
  }
242
224
 
243
- if(getRegistry().isRegistered(owner)) {
244
- revert ErrorRegistryServiceObjectOwnerRegistered(info.objectType, owner);
225
+ if(owner == msg.sender) {
226
+ revert ErrorRegistryServiceInvalidInitialOwner(owner);
227
+ }
228
+
229
+ if(getRegistry().isRegistered(owner)) {
230
+ ObjectType ownerType = getRegistry().getObjectInfo(owner).objectType;
231
+ if(ownerType == REGISTRY() || ownerType == STAKING() || ownerType == SERVICE() || ownerType == INSTANCE()) {
232
+ revert ErrorRegistryServiceObjectOwnerRegistered(info.objectType, owner);
233
+ }
245
234
  }
246
235
  }
247
236
 
@@ -21,7 +21,6 @@ contract RegistryServiceManager is
21
21
  address registry, // used by implementation
22
22
  bytes32 salt
23
23
  )
24
- ProxyManager(registry)
25
24
  {
26
25
  if(authority == address(0)) {
27
26
  revert ErrorRegistryAccessManagerAuthorityZero();
@@ -32,8 +31,9 @@ contract RegistryServiceManager is
32
31
  }
33
32
 
34
33
  RegistryService srv = new RegistryService{ salt: salt }();
35
- bytes memory data = abi.encode(registry, authority);
36
- IVersionable versionable = deployDetermenistic(
34
+ bytes memory data = abi.encode(authority, registry);
35
+ IVersionable versionable = initialize(
36
+ registry,
37
37
  address(srv),
38
38
  data,
39
39
  salt);
@@ -0,0 +1,195 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccess} from "../authorization/IAccess.sol";
5
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+ import {IService} from "../shared/IService.sol";
7
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
8
+
9
+ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
10
+ import {AccessAdminLib} from "../authorization/AccessAdminLib.sol";
11
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
12
+ import {ObjectType, ObjectTypeLib, RELEASE} from "../type/ObjectType.sol";
13
+ import {RoleId, ADMIN_ROLE, RELEASE_REGISTRY_ROLE} from "../type/RoleId.sol";
14
+ import {Str} from "../type/String.sol";
15
+ import {VersionPart} from "../type/Version.sol";
16
+
17
+
18
+ /// @dev The ReleaseAdmin contract implements the central authorization for the services of a specific release.
19
+ /// There is one ReleaseAdmin contract per major GIF release.
20
+ /// Locking/unlocking of all services of a release is implemented in function setReleaseLocked.
21
+ contract ReleaseAdmin is
22
+ AccessAdmin
23
+ {
24
+ event LogReleaseAdminReleaseLockChanged(VersionPart release, bool locked);
25
+ event LogReleaseAdminServiceLockChanged(VersionPart release, address service, bool locked);
26
+
27
+ error ErrorReleaseAdminCallerNotReleaseRegistry(address caller);
28
+ error ErrorReleaseAdminNotService(address notService);
29
+ error ErrorReleaseAdminReleaseLockAlreadySetTo(bool locked);
30
+
31
+ /// @dev release core roles
32
+ string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistry_Role";
33
+
34
+ /// @dev release core targets
35
+ string public constant RELEASE_ADMIN_TARGET_NAME = "ReleaseAdmin";
36
+
37
+ IServiceAuthorization internal _serviceAuthorization;
38
+
39
+
40
+ modifier onlyReleaseRegistry() {
41
+ (bool isMember, ) = _authority.hasRole(RELEASE_REGISTRY_ROLE().toInt(), msg.sender);
42
+ if(!isMember) {
43
+ revert ErrorReleaseAdminCallerNotReleaseRegistry(msg.sender);
44
+ }
45
+ _;
46
+ }
47
+
48
+
49
+ // @dev Only used for master release admin
50
+ constructor(address accessManager) {
51
+ initialize(
52
+ accessManager,
53
+ "MasterReleaseAdmin");
54
+ }
55
+
56
+
57
+ function completeSetup(
58
+ address registry,
59
+ address authorization,
60
+ VersionPart release,
61
+ address releaseRegistry
62
+ )
63
+ external
64
+ reinitializer(uint64(release.toInt()))
65
+ {
66
+
67
+ // checks
68
+ AccessAdminLib.checkRegistry(registry);
69
+
70
+ AccessManagerCloneable(
71
+ authority()).completeSetup(
72
+ registry,
73
+ release);
74
+
75
+ IServiceAuthorization serviceAuthorization = IServiceAuthorization(authorization);
76
+ _checkAuthorization(address(serviceAuthorization), RELEASE(), release, true, true);
77
+ _serviceAuthorization = serviceAuthorization;
78
+
79
+ // link nft ownability to registry
80
+ _linkToNftOwnable(registry);
81
+
82
+ // setup release contract
83
+ _setupReleaseRegistry(releaseRegistry);
84
+
85
+ // relase services will be authorized one by one via authorizeService()
86
+ }
87
+
88
+
89
+ /// @dev Sets up authorizaion for specified service.
90
+ /// For all authorized services its authorized functions are enabled.
91
+ /// Permissioned function: Access is restricted to release registry.
92
+ function authorizeService(
93
+ IService service,
94
+ ObjectType serviceDomain,
95
+ VersionPart release
96
+ )
97
+ external
98
+ restricted()
99
+ {
100
+ _createServiceTargetAndRole(service, serviceDomain, release);
101
+
102
+ // authorize functions of service
103
+ Str serviceTarget = _serviceAuthorization.getServiceTarget(serviceDomain);
104
+ RoleId[] memory authorizedRoles = _serviceAuthorization.getAuthorizedRoles(serviceTarget);
105
+
106
+ for (uint256 i = 0; i < authorizedRoles.length; i++) {
107
+ _authorizeFunctions(
108
+ IAuthorization(address(_serviceAuthorization)),
109
+ serviceTarget,
110
+ authorizedRoles[i]);
111
+ }
112
+ }
113
+
114
+
115
+ /// @dev Locks/unlocks all release targets.
116
+ /// For all authorized services of release its authorized functions are disabled/enabled.
117
+ /// Permissioned function: Access is restricted to release registry.
118
+ /// Note: onlyReleaseRegistry() modifier is used to prevent dead lock.
119
+ function setReleaseLocked(bool locked)
120
+ external
121
+ onlyReleaseRegistry()
122
+ {
123
+ // checks
124
+ AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
125
+ if(accessManager.isLocked() == locked) {
126
+ revert ErrorReleaseAdminReleaseLockAlreadySetTo(locked);
127
+ }
128
+
129
+ // effects
130
+ accessManager.setLocked(locked);
131
+
132
+ emit LogReleaseAdminReleaseLockChanged(getRelease(), locked);
133
+ }
134
+
135
+
136
+ /// @dev Lock/unlock specific service of release.
137
+ /// Permissioned function: Access is restricted to release registry.
138
+ function setServiceLocked(IService service, bool locked)
139
+ external
140
+ restricted()
141
+ {
142
+ // assume all targets except release admin are services
143
+ // ensure release admin can not be locked
144
+ if(address(service) == address(this)) {
145
+ revert ErrorReleaseAdminNotService(address(service));
146
+ }
147
+
148
+ _setTargetLocked(address(service), locked);
149
+
150
+ emit LogReleaseAdminServiceLockChanged(service.getRelease(), address(service), locked);
151
+ }
152
+
153
+ //--- private functions -------------------------------------------------//
154
+
155
+ function _createServiceTargetAndRole(
156
+ IService service,
157
+ ObjectType serviceDomain,
158
+ VersionPart release
159
+ )
160
+ private
161
+ {
162
+ string memory baseName = ObjectTypeLib.toName(serviceDomain);
163
+
164
+ // create service target
165
+ string memory serviceTargetName = ObjectTypeLib.toVersionedName(
166
+ baseName, "Service", release);
167
+
168
+ _createUncheckedTarget(address(service), serviceTargetName, TargetType.Service);
169
+ }
170
+
171
+ //--- private initialization functions -------------------------------------------//
172
+
173
+ function _setupReleaseRegistry(address releaseRegistry)
174
+ private
175
+ onlyInitializing()
176
+ {
177
+ _createManagedTarget(address(this), RELEASE_ADMIN_TARGET_NAME, IAccess.TargetType.Core);
178
+
179
+ _createRole(
180
+ RELEASE_REGISTRY_ROLE(),
181
+ AccessAdminLib.toRole({
182
+ adminRoleId: ADMIN_ROLE(),
183
+ roleType: RoleType.Contract,
184
+ maxMemberCount: 1,
185
+ name: RELEASE_REGISTRY_ROLE_NAME}));
186
+
187
+ FunctionInfo[] memory functions;
188
+ functions = new FunctionInfo[](2);
189
+ functions[0] = AccessAdminLib.toFunction(ReleaseAdmin.authorizeService.selector, "authorizeService");
190
+ functions[1] = AccessAdminLib.toFunction(ReleaseAdmin.setServiceLocked.selector, "setServiceLocked");
191
+ _authorizeTargetFunctions(address(this), RELEASE_REGISTRY_ROLE(), functions, true);
192
+
193
+ _grantRoleToAccount(RELEASE_REGISTRY_ROLE(), releaseRegistry);
194
+ }
195
+ }