@etherisc/gif-next 0.0.2-f13c010-035 → 0.0.2-f13d67f-541

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 (560) hide show
  1. package/README.md +90 -317
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +810 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +729 -287
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -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 +438 -35
  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 +560 -220
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +191 -21
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +132 -300
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +427 -53
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +64 -173
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +585 -231
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +190 -78
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -135
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +401 -78
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +160 -224
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +426 -52
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +308 -337
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +426 -52
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  50. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +408 -0
  51. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  52. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  53. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
  55. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  56. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  57. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
  59. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  60. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2185 -0
  61. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
  63. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  64. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  65. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  66. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  68. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +215 -257
  69. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
  71. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  72. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -165
  73. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  74. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +278 -233
  75. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  78. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +946 -466
  79. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
  81. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  82. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
  83. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  84. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  85. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  86. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  87. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  88. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +551 -50
  89. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +417 -17
  91. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  92. package/artifacts/contracts/instance/Instance.sol/Instance.json +615 -105
  93. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  94. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1121 -374
  95. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  96. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +379 -68
  97. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  98. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1127 -557
  99. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +434 -81
  101. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +119 -49
  103. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  104. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1286 -1925
  105. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  106. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  107. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  108. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  109. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  110. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  111. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  112. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  113. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  114. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  115. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  116. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  117. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  118. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  120. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  121. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  122. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  123. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  124. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  125. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  126. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  127. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +83 -175
  128. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  129. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +425 -54
  130. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  131. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  132. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +48 -74
  133. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  134. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -3
  135. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  136. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -111
  137. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  138. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +157 -81
  139. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +154 -46
  141. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  142. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +106 -173
  143. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  144. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +426 -52
  145. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  146. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +317 -344
  147. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -92
  149. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  150. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +219 -146
  151. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  152. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +63 -128
  153. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  154. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +380 -214
  155. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  156. package/artifacts/contracts/pool/Pool.sol/Pool.json +76 -159
  157. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  158. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  159. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  160. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +621 -413
  161. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +186 -66
  163. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  164. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +327 -62
  165. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  166. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +143 -43
  167. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  168. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +199 -223
  169. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  170. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +426 -52
  171. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  172. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +294 -189
  173. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +151 -83
  175. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  176. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +268 -10
  177. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  178. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +181 -19
  179. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  180. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +167 -56
  181. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  182. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +77 -3
  183. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  184. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +175 -181
  185. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  186. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +258 -22
  187. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  188. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +296 -194
  189. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  190. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  191. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +169 -77
  193. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  194. package/artifacts/contracts/product/PricingService.sol/PricingService.json +139 -114
  195. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  196. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +131 -59
  197. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  198. package/artifacts/contracts/product/Product.sol/Product.json +193 -217
  199. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  200. package/artifacts/contracts/product/RiskService.sol/RiskService.json +338 -87
  201. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  202. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +141 -41
  203. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  205. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +78 -19
  207. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  208. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +56 -3
  209. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  210. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  211. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  212. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  213. package/artifacts/contracts/registry/Registry.sol/Registry.json +116 -57
  214. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  215. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +848 -479
  216. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  217. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  218. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  219. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +89 -37
  220. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  221. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +119 -39
  222. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  223. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
  224. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  226. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  227. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +398 -64
  228. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  229. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
  230. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  231. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  232. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Component.sol/Component.json +66 -96
  234. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  235. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +308 -542
  236. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  237. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +155 -83
  238. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  239. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +544 -4
  240. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  241. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  242. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  243. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  244. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  245. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  246. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +48 -60
  248. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +171 -356
  250. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +48 -74
  252. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  253. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  254. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  255. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  256. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  257. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +139 -1
  258. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  259. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  260. package/artifacts/contracts/shared/IService.sol/IService.json +56 -3
  261. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  262. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  263. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  264. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +66 -110
  265. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  266. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  267. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  268. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  269. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  270. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  271. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  272. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  273. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -62
  274. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  275. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  276. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  277. package/artifacts/contracts/shared/Service.sol/Service.json +51 -11
  278. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  279. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +289 -112
  280. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  281. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  282. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  283. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +70 -30
  284. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  285. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1446 -164
  286. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  287. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +214 -110
  288. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  289. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  290. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  291. package/artifacts/contracts/staking/Staking.sol/Staking.json +1583 -296
  292. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  294. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  295. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +160 -69
  296. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  297. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
  298. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  299. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +257 -162
  300. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  301. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +122 -46
  302. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  303. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1632 -818
  304. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  305. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  306. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  307. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +160 -88
  308. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  309. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
  311. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  313. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  314. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  315. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  317. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  319. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  321. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  323. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  324. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  325. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  327. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  328. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  329. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +49 -50
  331. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  333. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  335. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  337. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  338. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  339. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  341. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  343. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +64 -2
  345. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  346. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  347. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  348. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  349. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  350. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/String.sol/StrLib.json +69 -2
  352. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
  354. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  355. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
  356. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  357. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  358. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  359. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  360. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  361. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  362. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  363. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +95 -25
  364. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  365. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  366. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  367. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  368. package/contracts/accounting/AccountingService.sol +274 -0
  369. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  370. package/contracts/accounting/IAccountingService.sol +47 -0
  371. package/contracts/authorization/AccessAdmin.sol +389 -306
  372. package/contracts/authorization/AccessAdminLib.sol +678 -0
  373. package/contracts/authorization/AccessManagerCloneable.sol +128 -4
  374. package/contracts/authorization/Authorization.sol +161 -260
  375. package/contracts/authorization/IAccess.sol +29 -12
  376. package/contracts/authorization/IAccessAdmin.sol +89 -84
  377. package/contracts/authorization/IAuthorization.sol +9 -43
  378. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  379. package/contracts/authorization/ServiceAuthorization.sol +228 -34
  380. package/contracts/distribution/BasicDistribution.sol +19 -18
  381. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  382. package/contracts/distribution/Distribution.sol +45 -85
  383. package/contracts/distribution/DistributionService.sol +192 -99
  384. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  385. package/contracts/distribution/IDistributionComponent.sol +3 -10
  386. package/contracts/distribution/IDistributionService.sol +38 -24
  387. package/contracts/examples/fire/FirePool.sol +21 -8
  388. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  389. package/contracts/examples/fire/FireProduct.sol +38 -20
  390. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  391. package/contracts/examples/flight/FlightLib.sol +279 -0
  392. package/contracts/examples/flight/FlightOracle.sol +168 -0
  393. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  394. package/contracts/examples/flight/FlightPool.sol +89 -0
  395. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  396. package/contracts/examples/flight/FlightProduct.sol +470 -0
  397. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  398. package/contracts/examples/flight/FlightUSD.sol +26 -0
  399. package/contracts/examples/flight/originalV1.sol +396 -0
  400. package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
  401. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  402. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  403. package/contracts/examples/unpermissioned/SimplePool.sol +32 -6
  404. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  405. package/contracts/examples/unpermissioned/SimpleProduct.sol +132 -46
  406. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  407. package/contracts/instance/BaseStore.sol +93 -0
  408. package/contracts/instance/BundleSet.sol +42 -38
  409. package/contracts/instance/IBaseStore.sol +37 -0
  410. package/contracts/instance/IInstance.sol +109 -19
  411. package/contracts/instance/IInstanceService.sol +61 -14
  412. package/contracts/instance/Instance.sol +184 -65
  413. package/contracts/instance/InstanceAdmin.sol +221 -193
  414. package/contracts/instance/InstanceAuthorizationV3.sol +153 -72
  415. package/contracts/instance/InstanceReader.sol +447 -314
  416. package/contracts/instance/InstanceService.sol +315 -214
  417. package/contracts/instance/InstanceServiceManager.sol +1 -1
  418. package/contracts/instance/InstanceStore.sol +152 -116
  419. package/contracts/instance/ProductStore.sol +290 -0
  420. package/contracts/instance/RiskSet.sol +126 -0
  421. package/contracts/instance/TargetNames.sol +10 -0
  422. package/contracts/instance/base/BalanceStore.sol +4 -6
  423. package/contracts/instance/base/ObjectCounter.sol +1 -2
  424. package/contracts/instance/base/ObjectLifecycle.sol +6 -8
  425. package/contracts/instance/base/ObjectSet.sol +31 -33
  426. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  427. package/contracts/instance/module/IBundle.sol +6 -5
  428. package/contracts/instance/module/IComponents.sol +19 -10
  429. package/contracts/instance/module/IDistribution.sol +21 -8
  430. package/contracts/instance/module/IPolicy.sol +28 -7
  431. package/contracts/instance/module/IRisk.sol +5 -0
  432. package/contracts/oracle/BasicOracle.sol +3 -6
  433. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  434. package/contracts/oracle/IOracle.sol +9 -4
  435. package/contracts/oracle/IOracleService.sol +12 -12
  436. package/contracts/oracle/Oracle.sol +5 -9
  437. package/contracts/oracle/OracleService.sol +98 -79
  438. package/contracts/oracle/OracleServiceManager.sol +1 -1
  439. package/contracts/pool/BasicPool.sol +26 -19
  440. package/contracts/pool/BasicPoolAuthorization.sol +34 -10
  441. package/contracts/pool/BundleService.sol +75 -182
  442. package/contracts/pool/BundleServiceManager.sol +1 -1
  443. package/contracts/pool/IBundleService.sol +28 -55
  444. package/contracts/pool/IPoolComponent.sol +1 -7
  445. package/contracts/pool/IPoolService.sol +65 -62
  446. package/contracts/pool/Pool.sol +111 -115
  447. package/contracts/pool/PoolLib.sol +341 -0
  448. package/contracts/pool/PoolService.sol +299 -229
  449. package/contracts/pool/PoolServiceManager.sol +1 -1
  450. package/contracts/product/ApplicationService.sol +93 -25
  451. package/contracts/product/ApplicationServiceManager.sol +1 -1
  452. package/contracts/product/BasicProduct.sol +10 -15
  453. package/contracts/product/BasicProductAuthorization.sol +33 -11
  454. package/contracts/product/ClaimService.sol +221 -207
  455. package/contracts/product/ClaimServiceManager.sol +1 -1
  456. package/contracts/product/IApplicationService.sol +28 -3
  457. package/contracts/product/IClaimService.sol +18 -5
  458. package/contracts/product/IPolicyService.sol +34 -12
  459. package/contracts/product/IPricingService.sol +1 -0
  460. package/contracts/product/IProductComponent.sol +4 -1
  461. package/contracts/product/IRiskService.sol +25 -10
  462. package/contracts/product/PolicyService.sol +260 -306
  463. package/contracts/product/PolicyServiceLib.sol +139 -0
  464. package/contracts/product/PolicyServiceManager.sol +1 -1
  465. package/contracts/product/PricingService.sol +52 -46
  466. package/contracts/product/PricingServiceManager.sol +3 -3
  467. package/contracts/product/Product.sol +106 -70
  468. package/contracts/product/RiskService.sol +130 -37
  469. package/contracts/product/RiskServiceManager.sol +1 -1
  470. package/contracts/registry/ChainNft.sol +4 -2
  471. package/contracts/registry/IRegistry.sol +25 -24
  472. package/contracts/registry/IRelease.sol +29 -0
  473. package/contracts/registry/Registry.sol +31 -12
  474. package/contracts/registry/RegistryAdmin.sol +94 -369
  475. package/contracts/registry/RegistryAuthorization.sol +337 -0
  476. package/contracts/registry/RegistryService.sol +4 -4
  477. package/contracts/registry/RegistryServiceManager.sol +1 -1
  478. package/contracts/registry/ReleaseAdmin.sol +199 -0
  479. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  480. package/contracts/registry/ReleaseRegistry.sol +158 -134
  481. package/contracts/registry/ServiceAuthorizationV3.sol +200 -52
  482. package/contracts/registry/TokenRegistry.sol +61 -59
  483. package/contracts/shared/Component.sol +58 -119
  484. package/contracts/shared/ComponentService.sol +400 -395
  485. package/contracts/shared/ComponentServiceManager.sol +1 -1
  486. package/contracts/shared/ContractLib.sol +277 -3
  487. package/contracts/shared/IComponent.sol +2 -18
  488. package/contracts/shared/IComponentService.sol +28 -38
  489. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  490. package/contracts/shared/INftOwnable.sol +2 -0
  491. package/contracts/shared/IRegisterable.sol +15 -5
  492. package/contracts/shared/IService.sol +3 -5
  493. package/contracts/shared/InitializableERC165.sol +9 -1
  494. package/contracts/shared/InstanceLinkedComponent.sol +63 -44
  495. package/contracts/shared/NftOwnable.sol +8 -6
  496. package/contracts/shared/PolicyHolder.sol +4 -3
  497. package/contracts/shared/Registerable.sol +41 -20
  498. package/contracts/shared/RegistryLinked.sol +7 -13
  499. package/contracts/shared/Service.sol +13 -30
  500. package/contracts/shared/TokenHandler.sol +264 -105
  501. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  502. package/contracts/staking/IStaking.sol +270 -72
  503. package/contracts/staking/IStakingService.sol +45 -75
  504. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  505. package/contracts/staking/Staking.sol +522 -222
  506. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
  507. package/contracts/staking/StakingManager.sol +4 -3
  508. package/contracts/staking/StakingReader.sol +58 -77
  509. package/contracts/staking/StakingService.sol +62 -148
  510. package/contracts/staking/StakingServiceManager.sol +6 -4
  511. package/contracts/staking/StakingStore.sol +1093 -330
  512. package/contracts/staking/TargetHandler.sol +132 -0
  513. package/contracts/staking/TargetManagerLib.sol +69 -46
  514. package/contracts/type/Amount.sol +4 -0
  515. package/contracts/type/Blocknumber.sol +17 -22
  516. package/contracts/type/ChainId.sol +101 -0
  517. package/contracts/type/Fee.sol +8 -8
  518. package/contracts/type/Key32.sol +2 -2
  519. package/contracts/type/Key32Set.sol +62 -0
  520. package/contracts/type/NftId.sol +6 -0
  521. package/contracts/type/ObjectType.sol +70 -68
  522. package/contracts/type/Referral.sol +6 -0
  523. package/contracts/type/RequestIdSet.sol +62 -0
  524. package/contracts/type/RiskId.sol +26 -8
  525. package/contracts/type/RoleId.sol +63 -45
  526. package/contracts/type/Seconds.sol +23 -0
  527. package/contracts/type/Selector.sol +5 -0
  528. package/contracts/type/String.sol +42 -0
  529. package/contracts/type/Timestamp.sol +14 -8
  530. package/contracts/type/UFixed.sol +35 -127
  531. package/contracts/type/Version.sol +54 -5
  532. package/contracts/upgradeability/IVersionable.sol +3 -0
  533. package/contracts/upgradeability/ProxyManager.sol +27 -13
  534. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  535. package/contracts/upgradeability/Versionable.sol +6 -3
  536. package/package.json +4 -4
  537. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  538. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  539. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  540. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  541. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
  542. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
  543. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  544. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
  545. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  546. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  547. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
  548. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  549. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  550. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  551. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  552. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  553. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  554. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  555. package/contracts/instance/module/IAccess.sol +0 -46
  556. package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
  557. package/contracts/shared/ComponentVerifyingService.sol +0 -126
  558. package/contracts/shared/IKeyValueStore.sol +0 -54
  559. package/contracts/shared/KeyValueStore.sol +0 -131
  560. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -0,0 +1,337 @@
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 {AccessAdminLib} from "../authorization/AccessAdminLib.sol";
9
+ import {Authorization} from "../authorization/Authorization.sol";
10
+ import {COMPONENT, POOL, REGISTRY, STAKING} from "../../contracts/type/ObjectType.sol";
11
+ import {PUBLIC_ROLE} from "../type/RoleId.sol";
12
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
13
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
14
+ import {RoleIdLib, ADMIN_ROLE, GIF_ADMIN_ROLE, GIF_MANAGER_ROLE} from "../type/RoleId.sol";
15
+ import {StakingStore} from "../staking/StakingStore.sol";
16
+ import {TargetHandler} from "../staking/TargetHandler.sol";
17
+ import {TokenHandler} from "../shared/TokenHandler.sol";
18
+ import {TokenRegistry} from "../registry/TokenRegistry.sol";
19
+ import {VersionPartLib} from "../type/Version.sol";
20
+
21
+
22
+ contract RegistryAuthorization
23
+ is Authorization
24
+ {
25
+ /// @dev gif core roles
26
+ string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
27
+ string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
28
+ string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
29
+ string public constant STAKING_ROLE_NAME = "StakingRole";
30
+
31
+ /// @dev gif roles for external contracts
32
+ string public constant REGISTRY_SERVICE_ROLE_NAME = "RegistryServiceRole";
33
+ string public constant COMPONENT_SERVICE_ROLE_NAME = "ComponentServiceRole";
34
+ string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
35
+ string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
36
+
37
+ /// @dev gif core targets
38
+ string public constant REGISTRY_ADMIN_TARGET_NAME = "RegistryAdmin";
39
+ string public constant REGISTRY_TARGET_NAME = "Registry";
40
+ string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
41
+ string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
42
+
43
+ string public constant STAKING_TARGET_NAME = "Staking";
44
+ string public constant STAKING_TARGET_HANDLER_NAME = "TargetHandler";
45
+ string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
46
+ string public constant STAKING_TH_TARGET_NAME = "StakingTh";
47
+
48
+ constructor(string memory commitHash)
49
+ Authorization(
50
+ REGISTRY_TARGET_NAME,
51
+ REGISTRY(),
52
+ 3,
53
+ commitHash,
54
+ TargetType.Core,
55
+ false) // includeTokenHandler
56
+ { }
57
+
58
+ /// @dev Sets up the GIF admin and manager roles.
59
+ function _setupRoles() internal override {
60
+
61
+ // max number of versioned contracts per generic service
62
+ uint32 maxReleases = uint32(VersionPartLib.releaseMax().toInt());
63
+
64
+ // service roles (for all releases)
65
+ _addRole(
66
+ RoleIdLib.toGenericServiceRoleId(REGISTRY()),
67
+ AccessAdminLib.roleInfo(
68
+ ADMIN_ROLE(),
69
+ TargetType.Core,
70
+ maxReleases,
71
+ REGISTRY_SERVICE_ROLE_NAME));
72
+
73
+ _addRole(
74
+ RoleIdLib.toGenericServiceRoleId(STAKING()),
75
+ AccessAdminLib.roleInfo(
76
+ ADMIN_ROLE(),
77
+ TargetType.Core,
78
+ maxReleases,
79
+ STAKING_SERVICE_ROLE_NAME));
80
+
81
+ _addRole(
82
+ RoleIdLib.toGenericServiceRoleId(COMPONENT()),
83
+ AccessAdminLib.roleInfo(
84
+ ADMIN_ROLE(),
85
+ TargetType.Core,
86
+ maxReleases,
87
+ COMPONENT_SERVICE_ROLE_NAME));
88
+
89
+ _addRole(
90
+ RoleIdLib.toGenericServiceRoleId(POOL()),
91
+ AccessAdminLib.roleInfo(
92
+ ADMIN_ROLE(),
93
+ TargetType.Core,
94
+ maxReleases,
95
+ POOL_SERVICE_ROLE_NAME));
96
+
97
+ // gif admin role
98
+ _addRole(
99
+ GIF_ADMIN_ROLE(),
100
+ AccessAdminLib.roleInfo(
101
+ ADMIN_ROLE(),
102
+ TargetType.Custom, // custom is only type that allows role removal
103
+ 2, // TODO decide on max member count
104
+ GIF_ADMIN_ROLE_NAME));
105
+
106
+ // gif manager role
107
+ _addRole(
108
+ GIF_MANAGER_ROLE(),
109
+ AccessAdminLib.roleInfo(
110
+ ADMIN_ROLE(),
111
+ TargetType.Custom, // custom is only type that allows role removal
112
+ 1, // TODO decide on max member count
113
+ GIF_MANAGER_ROLE_NAME));
114
+
115
+ }
116
+
117
+ /// @dev Sets up the relevant (non-service) targets for the registry.
118
+ function _setupTargets() internal override {
119
+ _addGifTarget(REGISTRY_ADMIN_TARGET_NAME);
120
+ _addGifTarget(RELEASE_REGISTRY_TARGET_NAME);
121
+ _addGifTarget(TOKEN_REGISTRY_TARGET_NAME);
122
+
123
+ _addGifTarget(STAKING_TARGET_NAME);
124
+ _addGifTarget(STAKING_TARGET_HANDLER_NAME);
125
+ _addGifTarget(STAKING_STORE_TARGET_NAME);
126
+ _addGifTarget(STAKING_TH_TARGET_NAME);
127
+ }
128
+
129
+
130
+ function _setupTargetAuthorizations()
131
+ internal
132
+ override
133
+ {
134
+ // registry
135
+ _setupRegistryAuthorization();
136
+ _setupRegistryAdminAuthorization();
137
+ _setupReleaseRegistryAuthorization();
138
+ _setupTokenRegistryAuthorization();
139
+
140
+ // staking
141
+ _setupStakingAuthorization();
142
+ _setupStakingTargetHandlerAuthorization();
143
+ _setupStakingStoreAuthorization();
144
+ _setupStakingThAuthorization();
145
+ }
146
+
147
+ event LogAccessAdminDebug(string message, string custom, uint256 value);
148
+
149
+ function _setupRegistryAuthorization() internal {
150
+ IAccess.FunctionInfo[] storage functions;
151
+
152
+ // gif admin role
153
+ functions = _authorizeForTarget(REGISTRY_TARGET_NAME, GIF_ADMIN_ROLE());
154
+ _authorize(functions, IRegistry.registerRegistry.selector, "registerRegistry");
155
+
156
+ // registry service role
157
+ functions = _authorizeForTarget(
158
+ REGISTRY_TARGET_NAME,
159
+ RoleIdLib.toGenericServiceRoleId(REGISTRY()));
160
+
161
+ _authorize(functions, IRegistry.register.selector, "register");
162
+ _authorize(functions, IRegistry.registerWithCustomType.selector, "registerWithCustomType");
163
+
164
+ // release registry role
165
+ functions = _authorizeForTarget(
166
+ REGISTRY_TARGET_NAME,
167
+ getTargetRole(getTarget(RELEASE_REGISTRY_TARGET_NAME)));
168
+
169
+ _authorize(functions, IRegistry.registerService.selector, "registerService");
170
+ }
171
+
172
+
173
+ function _setupRegistryAdminAuthorization() internal {
174
+ IAccess.FunctionInfo[] storage functions;
175
+
176
+ // release registry role
177
+ functions = _authorizeForTarget(
178
+ REGISTRY_ADMIN_TARGET_NAME,
179
+ getTargetRole(getTarget(RELEASE_REGISTRY_TARGET_NAME)));
180
+
181
+ _authorize(functions, RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
182
+ }
183
+
184
+
185
+ function _setupReleaseRegistryAuthorization() internal {
186
+ IAccess.FunctionInfo[] storage functions;
187
+
188
+ functions = _authorizeForTarget(RELEASE_REGISTRY_TARGET_NAME, GIF_ADMIN_ROLE());
189
+ _authorize(functions, ReleaseRegistry.createNextRelease.selector, "createNextRelease");
190
+ _authorize(functions, ReleaseRegistry.activateNextRelease.selector, "activateNextRelease");
191
+ _authorize(functions, ReleaseRegistry.setActive.selector, "setActive");
192
+
193
+ functions = _authorizeForTarget(RELEASE_REGISTRY_TARGET_NAME, GIF_MANAGER_ROLE());
194
+ _authorize(functions, ReleaseRegistry.prepareNextRelease.selector, "prepareNextRelease");
195
+ _authorize(functions, ReleaseRegistry.registerService.selector, "registerService");
196
+ }
197
+
198
+
199
+ function _setupTokenRegistryAuthorization() internal {
200
+ IAccess.FunctionInfo[] storage functions;
201
+
202
+ // gif manager role
203
+ functions = _authorizeForTarget(TOKEN_REGISTRY_TARGET_NAME, GIF_MANAGER_ROLE());
204
+ _authorize(functions, TokenRegistry.registerToken.selector, "registerToken");
205
+ _authorize(functions, TokenRegistry.registerRemoteToken.selector, "registerRemoteToken");
206
+ _authorize(functions, TokenRegistry.setActive.selector, "setActive");
207
+ _authorize(functions, TokenRegistry.setActiveForVersion.selector, "setActiveForVersion");
208
+ // TODO find a better way (only needed for testing)
209
+ _authorize(functions, TokenRegistry.setActiveWithVersionCheck.selector, "setActiveWithVersionCheck");
210
+ }
211
+
212
+
213
+ function _setupStakingAuthorization() internal {
214
+ IAccess.FunctionInfo[] storage functions;
215
+
216
+ // staking public role (protected by owner)
217
+ functions = _authorizeForTarget(
218
+ STAKING_TARGET_NAME,
219
+ PUBLIC_ROLE());
220
+
221
+ // unpermissioned functions
222
+ _authorize(functions, IStaking.updateTargetLimit.selector, "updateTargetLimit");
223
+ _authorize(functions, IStaking.createStake.selector, "createStake");
224
+
225
+ // owner functions (permissioned to staking owner)
226
+ _authorize(functions, IStaking.setSupportInfo.selector, "setSupportInfo");
227
+ _authorize(functions, IStaking.setUpdateTriggers.selector, "setUpdateTriggers");
228
+ _authorize(functions, IStaking.setProtocolLockingPeriod.selector, "setProtocolLockingPeriod");
229
+ _authorize(functions, IStaking.setProtocolRewardRate.selector, "setProtocolRewardRate");
230
+ _authorize(functions, IStaking.setStakingRate.selector, "setStakingRate");
231
+ _authorize(functions, IStaking.setStakingService.selector, "setStakingService");
232
+ _authorize(functions, IStaking.setStakingReader.selector, "setStakingReader");
233
+ _authorize(functions, IStaking.addToken.selector, "addToken");
234
+
235
+ // target owner functions (permissioned to target owner)
236
+ _authorize(functions, IStaking.setTargetLimits.selector, "setTargetLimits");
237
+
238
+ // staker functions (may be permissioned to nft holders)
239
+ _authorize(functions, IStaking.stake.selector, "stake");
240
+ _authorize(functions, IStaking.unstake.selector, "unstake");
241
+ _authorize(functions, IStaking.restake.selector, "restake");
242
+ _authorize(functions, IStaking.updateRewards.selector, "updateRewards");
243
+ _authorize(functions, IStaking.claimRewards.selector, "claimRewards");
244
+
245
+ // reward reserve functions and token handler
246
+ _authorize(functions, IStaking.approveTokenHandler.selector, "approveTokenHandler");
247
+ _authorize(functions, IStaking.refillRewardReserves.selector, "refillRewardReserves");
248
+ _authorize(functions, IStaking.withdrawRewardReserves.selector, "withdrawRewardReserves");
249
+
250
+ // staking service role
251
+ functions = _authorizeForTarget(
252
+ STAKING_TARGET_NAME,
253
+ RoleIdLib.toGenericServiceRoleId(STAKING()));
254
+
255
+ _authorize(functions, IStaking.registerTarget.selector, "registerTarget");
256
+ _authorize(functions, IStaking.setLockingPeriod.selector, "setLockingPeriod");
257
+ _authorize(functions, IStaking.setRewardRate.selector, "setRewardRate");
258
+ _authorize(functions, IStaking.setMaxStakedAmount.selector, "setMaxStakedAmount");
259
+ _authorize(functions, IStaking.refillRewardReservesByService.selector, "refillRewardReservesByService");
260
+ _authorize(functions, IStaking.withdrawRewardReservesByService.selector, "withdrawRewardReservesByService");
261
+
262
+ // pool service role
263
+ functions = _authorizeForTarget(
264
+ STAKING_TARGET_NAME,
265
+ RoleIdLib.toGenericServiceRoleId(COMPONENT()));
266
+
267
+ _authorize(functions, IStaking.addTargetToken.selector, "addTargetToken");
268
+
269
+ // pool service role
270
+ functions = _authorizeForTarget(
271
+ STAKING_TARGET_NAME,
272
+ RoleIdLib.toGenericServiceRoleId(POOL()));
273
+
274
+ _authorize(functions, IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
275
+ _authorize(functions, IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
276
+ }
277
+
278
+
279
+ function _setupStakingTargetHandlerAuthorization() internal {
280
+ IAccess.FunctionInfo[] storage functions;
281
+
282
+ // staking service role
283
+ functions = _authorizeForTarget(
284
+ STAKING_TARGET_HANDLER_NAME,
285
+ getTargetRole(getTarget(STAKING_TARGET_NAME)));
286
+
287
+ _authorize(functions, TargetHandler.setUpdateTriggers.selector, "setUpdateTriggers");
288
+ }
289
+
290
+
291
+ function _setupStakingStoreAuthorization() internal {
292
+ IAccess.FunctionInfo[] storage functions;
293
+
294
+ // release registry role
295
+ functions = _authorizeForTarget(
296
+ STAKING_STORE_TARGET_NAME,
297
+ getTargetRole(getTarget(STAKING_TARGET_NAME)));
298
+
299
+ _authorize(functions, StakingStore.setTargetLimits.selector, "setTargetLimits");
300
+ _authorize(functions, StakingStore.updateTargetLimit.selector, "updateTargetLimit");
301
+ _authorize(functions, StakingStore.setStakingReader.selector, "setStakingReader");
302
+ _authorize(functions, StakingStore.setTargetLimitHandler.selector, "setTargetLimitHandler");
303
+ _authorize(functions, StakingStore.setSupportInfo.selector, "setSupportInfo");
304
+ _authorize(functions, StakingStore.addToken.selector, "addToken");
305
+ _authorize(functions, StakingStore.addTargetToken.selector, "addTargetToken");
306
+ _authorize(functions, StakingStore.setStakingRate.selector, "setStakingRate");
307
+ _authorize(functions, StakingStore.createTarget.selector, "createTarget");
308
+ _authorize(functions, StakingStore.setLockingPeriod.selector, "setLockingPeriod");
309
+ _authorize(functions, StakingStore.setRewardRate.selector, "setRewardRate");
310
+ _authorize(functions, StakingStore.setMaxStakedAmount.selector, "setMaxStakedAmount");
311
+ _authorize(functions, StakingStore.refillRewardReserves.selector, "refillRewardReserves");
312
+ _authorize(functions, StakingStore.withdrawRewardReserves.selector, "withdrawRewardReserves");
313
+ _authorize(functions, StakingStore.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
314
+ _authorize(functions, StakingStore.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
315
+ _authorize(functions, StakingStore.createStake.selector, "createStake");
316
+ _authorize(functions, StakingStore.stake.selector, "stake");
317
+ _authorize(functions, StakingStore.unstake.selector, "unstake");
318
+ _authorize(functions, StakingStore.updateRewards.selector, "updateRewards");
319
+ _authorize(functions, StakingStore.restakeRewards.selector, "restakeRewards");
320
+ _authorize(functions, StakingStore.claimRewards.selector, "claimRewards");
321
+ }
322
+
323
+
324
+ function _setupStakingThAuthorization() internal {
325
+ IAccess.FunctionInfo[] storage functions;
326
+
327
+ // staking service role
328
+ functions = _authorizeForTarget(
329
+ STAKING_TH_TARGET_NAME,
330
+ RoleIdLib.toGenericServiceRoleId(STAKING()));
331
+
332
+ _authorize(functions, TokenHandler.approve.selector, "approve");
333
+ _authorize(functions, TokenHandler.pullToken.selector, "pullToken");
334
+ _authorize(functions, TokenHandler.pushToken.selector, "pushToken");
335
+ }
336
+ }
337
+
@@ -30,14 +30,14 @@ contract RegistryService is
30
30
  )
31
31
  internal
32
32
  virtual override
33
- initializer()
33
+ onlyInitializing
34
34
  {
35
35
  (
36
- address registryAddress,
37
- address initialAuthority
36
+ address authority,
37
+ address registry
38
38
  ) = abi.decode(data, (address, address));
39
39
 
40
- _initializeService(registryAddress, initialAuthority, owner);
40
+ __Service_init(authority, registry, owner);
41
41
  _registerInterface(type(IRegistryService).interfaceId);
42
42
  }
43
43
 
@@ -31,7 +31,7 @@ contract RegistryServiceManager is
31
31
  }
32
32
 
33
33
  RegistryService srv = new RegistryService{ salt: salt }();
34
- bytes memory data = abi.encode(registry, authority);
34
+ bytes memory data = abi.encode(authority, registry);
35
35
  IVersionable versionable = initialize(
36
36
  registry,
37
37
  address(srv),
@@ -0,0 +1,199 @@
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
+ // checks
67
+ AccessAdminLib.checkRegistry(registry);
68
+
69
+ AccessManagerCloneable(
70
+ authority()).completeSetup(
71
+ registry,
72
+ release);
73
+
74
+ IServiceAuthorization serviceAuthorization = IServiceAuthorization(authorization);
75
+ _checkAuthorization(address(serviceAuthorization), RELEASE(), release, true, true);
76
+ _serviceAuthorization = serviceAuthorization;
77
+
78
+ // link nft ownability to registry
79
+ _linkToNftOwnable(registry);
80
+
81
+ _createRoles(_serviceAuthorization);
82
+
83
+ // setup release contract
84
+ _setupReleaseRegistry(releaseRegistry);
85
+
86
+ // relase services will be authorized one by one via authorizeService()
87
+ }
88
+
89
+
90
+ /// @dev Sets up authorizaion for specified service.
91
+ /// For all authorized services its authorized functions are enabled.
92
+ /// Permissioned function: Access is restricted to release registry.
93
+ function authorizeService(
94
+ IService service,
95
+ ObjectType serviceDomain,
96
+ VersionPart release
97
+ )
98
+ external
99
+ restricted()
100
+ {
101
+ _createServiceTargetAndRole(service, serviceDomain, release);
102
+
103
+ // authorize functions of service
104
+ Str serviceTarget = _serviceAuthorization.getServiceTarget(serviceDomain);
105
+ RoleId[] memory authorizedRoles = _serviceAuthorization.getAuthorizedRoles(serviceTarget);
106
+
107
+ for (uint256 i = 0; i < authorizedRoles.length; i++) {
108
+ _authorizeFunctions(
109
+ IAuthorization(address(_serviceAuthorization)),
110
+ serviceTarget,
111
+ authorizedRoles[i]);
112
+ }
113
+ }
114
+
115
+
116
+ /// @dev Locks/unlocks all release targets.
117
+ /// For all authorized services of release its authorized functions are disabled/enabled.
118
+ /// Permissioned function: Access is restricted to release registry.
119
+ /// Note: onlyReleaseRegistry() modifier is used to prevent dead lock.
120
+ function setReleaseLocked(bool locked)
121
+ external
122
+ onlyReleaseRegistry()
123
+ {
124
+ // checks
125
+ AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
126
+ if(accessManager.isLocked() == locked) {
127
+ revert ErrorReleaseAdminReleaseLockAlreadySetTo(locked);
128
+ }
129
+
130
+ // effects
131
+ accessManager.setLocked(locked);
132
+
133
+ emit LogReleaseAdminReleaseLockChanged(getRelease(), locked);
134
+ }
135
+
136
+
137
+ /// @dev Lock/unlock specific service of release.
138
+ /// Permissioned function: Access is restricted to release registry.
139
+ function setServiceLocked(IService service, bool locked)
140
+ external
141
+ restricted()
142
+ {
143
+ // assume all targets except release admin are services
144
+ // ensure release admin can not be locked
145
+ if(address(service) == address(this)) {
146
+ revert ErrorReleaseAdminNotService(address(service));
147
+ }
148
+
149
+ _setTargetLocked(address(service), locked);
150
+
151
+ emit LogReleaseAdminServiceLockChanged(service.getRelease(), address(service), locked);
152
+ }
153
+
154
+ //--- private functions -------------------------------------------------//
155
+
156
+ function _createServiceTargetAndRole(
157
+ IService service,
158
+ ObjectType serviceDomain,
159
+ VersionPart release
160
+ )
161
+ private
162
+ {
163
+ string memory baseName = ObjectTypeLib.toName(serviceDomain);
164
+
165
+ // create service target
166
+ string memory serviceTargetName = ObjectTypeLib.toVersionedName(
167
+ baseName, "Service", release);
168
+
169
+ // create unchecked target
170
+ _createTarget(address(service), serviceTargetName, TargetType.Service, false);
171
+ }
172
+
173
+ //--- private initialization functions -------------------------------------------//
174
+
175
+ function _setupReleaseRegistry(address releaseRegistry)
176
+ private
177
+ onlyInitializing()
178
+ {
179
+
180
+ _createRole(
181
+ RELEASE_REGISTRY_ROLE(),
182
+ AccessAdminLib.coreRoleInfo(RELEASE_REGISTRY_ROLE_NAME),
183
+ true); // revets on existing role
184
+
185
+ _createTarget(
186
+ address(this),
187
+ RELEASE_ADMIN_TARGET_NAME,
188
+ IAccess.TargetType.Core,
189
+ true); // check authority maches
190
+
191
+ FunctionInfo[] memory functions;
192
+ functions = new FunctionInfo[](2);
193
+ functions[0] = AccessAdminLib.toFunction(ReleaseAdmin.authorizeService.selector, "authorizeService");
194
+ functions[1] = AccessAdminLib.toFunction(ReleaseAdmin.setServiceLocked.selector, "setServiceLocked");
195
+ _authorizeTargetFunctions(address(this), RELEASE_REGISTRY_ROLE(), functions, false, true);
196
+
197
+ _grantRoleToAccount(RELEASE_REGISTRY_ROLE(), releaseRegistry);
198
+ }
199
+ }
@@ -5,6 +5,8 @@ import {RELEASE} from "../type/ObjectType.sol";
5
5
  import {SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
6
6
  import {Lifecycle} from "../shared/Lifecycle.sol";
7
7
 
8
+ /// @dev Release lifeycle state machine.
9
+ /// Helper contract for ReleaseRegistry.
8
10
  contract ReleaseLifecycle is
9
11
  Lifecycle
10
12
  {