@etherisc/gif-next 0.0.2-7f39e38-904 → 0.0.2-7fbee0d-269

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 (632) hide show
  1. package/README.md +136 -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 +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1735 -0
  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 +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +817 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1400 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +465 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +407 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +652 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +844 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +146 -617
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +767 -301
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +267 -116
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +152 -283
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +553 -77
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +844 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +844 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  53. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +383 -0
  54. package/artifacts/contracts/examples/flight/FlightMessageVerfier.sol/FlightMessageVerifier.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightMessageVerfier.sol/FlightMessageVerifier.json +253 -0
  56. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  58. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
  60. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  62. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
  64. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2180 -0
  66. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
  68. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  69. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  70. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  71. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  84. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  85. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
  86. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  87. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +59 -205
  88. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  90. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  92. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  93. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +614 -92
  94. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +517 -75
  96. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  97. package/artifacts/contracts/instance/Instance.sol/Instance.json +639 -237
  98. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  99. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2400 -0
  100. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  101. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +872 -0
  102. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  103. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1806 -748
  104. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +509 -224
  106. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +175 -98
  108. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  109. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1482 -1911
  110. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  111. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  112. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  113. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  114. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  115. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  116. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  117. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  118. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  120. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  121. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  122. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  123. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  124. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  125. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  126. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  127. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  128. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  129. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  130. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  131. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  132. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  133. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  134. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  135. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  136. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +849 -0
  137. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  138. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  139. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  140. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  141. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  142. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  143. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  144. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  145. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  146. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  147. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +830 -0
  149. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  150. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  151. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  152. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +844 -0
  153. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  154. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +582 -235
  155. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +257 -94
  157. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  158. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +398 -49
  159. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  160. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +151 -404
  161. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  162. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +770 -365
  163. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  164. package/artifacts/contracts/pool/Pool.sol/Pool.json +148 -692
  165. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  166. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  167. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  168. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +947 -525
  169. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +260 -93
  171. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  172. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +382 -166
  173. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +201 -90
  175. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  176. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  177. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  178. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +844 -0
  179. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  180. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +502 -230
  181. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +229 -110
  183. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  184. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +320 -9
  185. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  186. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +369 -18
  187. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  188. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +436 -101
  189. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  190. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +202 -80
  191. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  192. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +291 -274
  193. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  194. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +295 -150
  195. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  196. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +564 -292
  197. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  198. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  199. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  200. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +239 -96
  201. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  202. package/artifacts/contracts/product/PricingService.sol/PricingService.json +262 -299
  203. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  204. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +193 -114
  205. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  206. package/artifacts/contracts/product/Product.sol/Product.json +322 -606
  207. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  208. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  209. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  210. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +794 -0
  211. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  212. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  213. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  214. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +402 -79
  215. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  216. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +125 -146
  217. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  218. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  219. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  220. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  221. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  222. package/artifacts/contracts/registry/Registry.sol/Registry.json +719 -120
  223. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  224. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2255 -0
  225. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  226. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  227. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  228. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +174 -274
  229. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  230. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +180 -92
  231. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  232. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
  233. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  234. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  235. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  236. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1401 -0
  237. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  238. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +705 -0
  239. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  240. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +135 -67
  241. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  242. package/artifacts/contracts/shared/Component.sol/Component.json +92 -287
  243. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  244. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +632 -542
  245. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  246. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +230 -113
  247. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  248. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  249. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  250. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  251. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  252. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  253. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  254. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  255. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  256. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +99 -104
  257. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  258. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +549 -228
  259. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  260. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +138 -140
  261. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  262. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  263. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  264. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +42 -1
  265. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  266. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  267. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  268. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +173 -0
  269. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  270. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  271. package/artifacts/contracts/shared/IService.sol/IService.json +103 -2
  272. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  273. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  274. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  275. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +131 -376
  276. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  277. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  278. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  279. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  280. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  281. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +45 -55
  282. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  283. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  284. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  285. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +148 -98
  286. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  287. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  288. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  289. package/artifacts/contracts/shared/Service.sol/Service.json +96 -102
  290. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  291. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  292. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  293. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  294. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  295. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  296. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  297. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1558 -246
  298. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  299. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +382 -119
  300. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  301. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  302. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  303. package/artifacts/contracts/staking/Staking.sol/Staking.json +1734 -561
  304. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  305. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  306. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  307. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +232 -113
  308. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  309. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +430 -94
  310. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  311. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +442 -305
  312. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  313. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +181 -93
  314. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  315. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2044 -637
  316. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  317. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  318. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  319. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +253 -68
  320. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  321. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  322. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Amount.sol/AmountLib.json +122 -5
  324. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  326. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  328. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  330. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  332. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  334. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  336. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  337. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  338. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
  340. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  341. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  342. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +150 -4
  344. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  346. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  348. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  350. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  351. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  352. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  354. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  355. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
  356. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  357. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +136 -2
  358. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  359. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  360. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  361. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  362. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  363. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  364. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  365. package/artifacts/contracts/type/String.sol/StrLib.json +199 -0
  366. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  367. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +69 -5
  368. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  369. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  370. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  371. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  372. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  373. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  374. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  375. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  376. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  377. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +672 -0
  378. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  379. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  380. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  381. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  382. package/contracts/accounting/AccountingService.sol +274 -0
  383. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  384. package/contracts/accounting/IAccountingService.sol +47 -0
  385. package/contracts/authorization/AccessAdmin.sol +679 -0
  386. package/contracts/authorization/AccessAdminLib.sol +678 -0
  387. package/contracts/authorization/AccessManagerCloneable.sol +140 -0
  388. package/contracts/authorization/Authorization.sol +190 -0
  389. package/contracts/authorization/IAccess.sol +66 -0
  390. package/contracts/authorization/IAccessAdmin.sol +142 -0
  391. package/contracts/authorization/IAuthorization.sol +26 -0
  392. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  393. package/contracts/authorization/ServiceAuthorization.sol +300 -0
  394. package/contracts/distribution/BasicDistribution.sol +140 -0
  395. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  396. package/contracts/distribution/Distribution.sol +125 -143
  397. package/contracts/distribution/DistributionService.sol +287 -137
  398. package/contracts/distribution/DistributionServiceManager.sol +8 -23
  399. package/contracts/distribution/IDistributionComponent.sol +21 -42
  400. package/contracts/distribution/IDistributionService.sol +60 -26
  401. package/contracts/examples/fire/DamageLevel.sol +59 -0
  402. package/contracts/examples/fire/FirePool.sol +86 -0
  403. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  404. package/contracts/examples/fire/FireProduct.sol +433 -0
  405. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  406. package/contracts/examples/fire/FireUSD.sol +26 -0
  407. package/contracts/examples/flight/FlightLib.sol +273 -0
  408. package/contracts/examples/flight/FlightMessageVerfier.sol +129 -0
  409. package/contracts/examples/flight/FlightOracle.sol +167 -0
  410. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  411. package/contracts/examples/flight/FlightPool.sol +89 -0
  412. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  413. package/contracts/examples/flight/FlightProduct.sol +464 -0
  414. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  415. package/contracts/examples/flight/FlightUSD.sol +26 -0
  416. package/contracts/examples/flight/originalV1.sol +396 -0
  417. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  418. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  419. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  420. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  421. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  422. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  423. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  424. package/contracts/instance/BaseStore.sol +93 -0
  425. package/contracts/instance/BundleSet.sol +130 -0
  426. package/contracts/instance/IBaseStore.sol +37 -0
  427. package/contracts/instance/IInstance.sol +128 -49
  428. package/contracts/instance/IInstanceService.sol +82 -46
  429. package/contracts/instance/Instance.sol +254 -131
  430. package/contracts/instance/InstanceAdmin.sol +307 -0
  431. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  432. package/contracts/instance/InstanceReader.sol +499 -237
  433. package/contracts/instance/InstanceService.sol +391 -244
  434. package/contracts/instance/InstanceServiceManager.sol +8 -13
  435. package/contracts/instance/InstanceStore.sol +172 -109
  436. package/contracts/instance/ProductStore.sol +290 -0
  437. package/contracts/instance/RiskSet.sol +126 -0
  438. package/contracts/instance/TargetNames.sol +10 -0
  439. package/contracts/instance/base/BalanceStore.sol +15 -12
  440. package/contracts/instance/base/Cloneable.sol +2 -25
  441. package/contracts/instance/base/ObjectCounter.sol +20 -0
  442. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  443. package/contracts/instance/base/ObjectSet.sol +77 -0
  444. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  445. package/contracts/instance/module/IBundle.sol +6 -5
  446. package/contracts/instance/module/IComponents.sol +29 -21
  447. package/contracts/instance/module/IDistribution.sol +21 -9
  448. package/contracts/instance/module/IPolicy.sol +50 -29
  449. package/contracts/instance/module/IRisk.sol +5 -0
  450. package/contracts/mock/Dip.sol +1 -1
  451. package/contracts/oracle/BasicOracle.sol +44 -0
  452. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  453. package/contracts/oracle/IOracle.sol +41 -0
  454. package/contracts/oracle/IOracleComponent.sol +33 -0
  455. package/contracts/oracle/IOracleService.sol +66 -0
  456. package/contracts/oracle/Oracle.sol +152 -0
  457. package/contracts/oracle/OracleService.sol +310 -0
  458. package/contracts/oracle/OracleServiceManager.sol +39 -0
  459. package/contracts/pool/BasicPool.sol +161 -0
  460. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  461. package/contracts/pool/BundleService.sol +225 -135
  462. package/contracts/pool/BundleServiceManager.sol +8 -11
  463. package/contracts/pool/IBundleService.sol +43 -33
  464. package/contracts/pool/IPoolComponent.sol +20 -70
  465. package/contracts/pool/IPoolService.sol +98 -75
  466. package/contracts/pool/Pool.sol +196 -164
  467. package/contracts/pool/PoolLib.sol +341 -0
  468. package/contracts/pool/PoolService.sol +444 -254
  469. package/contracts/pool/PoolServiceManager.sol +6 -9
  470. package/contracts/product/ApplicationService.sol +159 -86
  471. package/contracts/product/ApplicationServiceManager.sol +6 -6
  472. package/contracts/product/BasicProduct.sol +48 -0
  473. package/contracts/product/BasicProductAuthorization.sol +64 -0
  474. package/contracts/product/ClaimService.sol +396 -207
  475. package/contracts/product/ClaimServiceManager.sol +6 -6
  476. package/contracts/product/IApplicationService.sol +29 -3
  477. package/contracts/product/IClaimService.sol +51 -8
  478. package/contracts/product/IPolicyService.sol +61 -37
  479. package/contracts/product/IPricingService.sol +11 -10
  480. package/contracts/product/IProductComponent.sol +29 -9
  481. package/contracts/product/IRiskService.sol +48 -0
  482. package/contracts/product/PolicyService.sol +450 -278
  483. package/contracts/product/PolicyServiceLib.sol +139 -0
  484. package/contracts/product/PolicyServiceManager.sol +6 -9
  485. package/contracts/product/PricingService.sol +95 -90
  486. package/contracts/product/PricingServiceManager.sol +6 -9
  487. package/contracts/product/Product.sol +261 -147
  488. package/contracts/product/RiskService.sol +189 -0
  489. package/contracts/product/RiskServiceManager.sol +39 -0
  490. package/contracts/registry/ChainNft.sol +72 -39
  491. package/contracts/registry/IRegistry.sol +88 -41
  492. package/contracts/registry/IRegistryService.sol +4 -10
  493. package/contracts/registry/IRelease.sol +29 -0
  494. package/contracts/registry/ITransferInterceptor.sol +1 -2
  495. package/contracts/registry/Registry.sol +389 -231
  496. package/contracts/registry/RegistryAdmin.sol +173 -0
  497. package/contracts/registry/RegistryAuthorization.sol +337 -0
  498. package/contracts/registry/RegistryService.sol +50 -75
  499. package/contracts/registry/RegistryServiceManager.sol +5 -24
  500. package/contracts/registry/ReleaseAdmin.sol +199 -0
  501. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  502. package/contracts/registry/ReleaseRegistry.sol +525 -0
  503. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  504. package/contracts/registry/TokenRegistry.sol +73 -110
  505. package/contracts/shared/Component.sol +72 -148
  506. package/contracts/shared/ComponentService.sol +466 -370
  507. package/contracts/shared/ComponentServiceManager.sol +10 -7
  508. package/contracts/shared/ContractLib.sol +312 -0
  509. package/contracts/shared/EcdsaChecker.sol +5 -0
  510. package/contracts/shared/IComponent.sol +7 -23
  511. package/contracts/shared/IComponentService.sol +51 -31
  512. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  513. package/contracts/shared/ILifecycle.sol +3 -2
  514. package/contracts/shared/INftOwnable.sol +5 -1
  515. package/contracts/shared/IPolicyHolder.sol +12 -22
  516. package/contracts/shared/IRegisterable.sol +22 -1
  517. package/contracts/shared/IService.sol +10 -5
  518. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  519. package/contracts/shared/InstanceLinkedComponent.sol +145 -58
  520. package/contracts/shared/Lifecycle.sol +30 -63
  521. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  522. package/contracts/shared/NftOwnable.sol +35 -24
  523. package/contracts/shared/PolicyHolder.sol +19 -57
  524. package/contracts/shared/Registerable.sol +52 -21
  525. package/contracts/shared/RegistryLinked.sol +9 -14
  526. package/contracts/shared/Service.sol +31 -41
  527. package/contracts/shared/TokenHandler.sol +310 -26
  528. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  529. package/contracts/staking/IStaking.sol +284 -70
  530. package/contracts/staking/IStakingService.sol +59 -94
  531. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  532. package/contracts/staking/Staking.sol +558 -263
  533. package/contracts/staking/StakingLib.sol +195 -0
  534. package/contracts/staking/StakingManager.sol +20 -32
  535. package/contracts/staking/StakingReader.sol +84 -60
  536. package/contracts/staking/StakingService.sol +108 -162
  537. package/contracts/staking/StakingServiceManager.sol +10 -8
  538. package/contracts/staking/StakingStore.sol +1222 -183
  539. package/contracts/staking/TargetHandler.sol +132 -0
  540. package/contracts/staking/TargetManagerLib.sol +95 -40
  541. package/contracts/type/Amount.sol +43 -3
  542. package/contracts/type/Blocknumber.sol +24 -23
  543. package/contracts/type/ChainId.sol +101 -0
  544. package/contracts/type/ClaimId.sol +6 -1
  545. package/contracts/type/Fee.sol +8 -8
  546. package/contracts/type/Key32.sol +2 -2
  547. package/contracts/type/Key32Set.sol +62 -0
  548. package/contracts/type/NftId.sol +15 -8
  549. package/contracts/type/ObjectType.sol +174 -65
  550. package/contracts/type/PayoutId.sol +10 -10
  551. package/contracts/type/Referral.sol +7 -0
  552. package/contracts/type/RequestId.sol +75 -0
  553. package/contracts/type/RequestIdSet.sol +62 -0
  554. package/contracts/type/RiskId.sol +38 -6
  555. package/contracts/type/RoleId.sol +121 -84
  556. package/contracts/type/Seconds.sol +54 -1
  557. package/contracts/type/Selector.sol +107 -0
  558. package/contracts/type/StateId.sol +27 -1
  559. package/contracts/type/String.sol +95 -0
  560. package/contracts/type/Timestamp.sol +30 -10
  561. package/contracts/type/UFixed.sol +62 -125
  562. package/contracts/type/Version.sol +57 -6
  563. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  564. package/contracts/{shared → upgradeability}/ProxyManager.sol +102 -51
  565. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  566. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  567. package/package.json +13 -8
  568. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  569. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  570. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  571. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  572. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  573. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
  574. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  575. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  576. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  577. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  578. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  579. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -381
  580. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  581. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -673
  582. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  583. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -675
  584. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  585. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -322
  586. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  587. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1151
  588. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  589. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  590. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  591. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  592. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  593. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  594. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  595. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  596. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  597. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  598. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -581
  599. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  600. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  601. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  602. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -598
  603. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  604. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  605. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  606. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +0 -4
  607. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.json +0 -37
  608. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +0 -4
  609. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +0 -357
  610. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  611. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -402
  612. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  613. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  614. package/contracts/instance/BundleManager.sol +0 -126
  615. package/contracts/instance/InstanceAccessManager.sol +0 -543
  616. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
  617. package/contracts/instance/base/ObjectManager.sol +0 -82
  618. package/contracts/instance/module/IAccess.sol +0 -54
  619. package/contracts/product/IProductService.sol +0 -33
  620. package/contracts/product/ProductService.sol +0 -124
  621. package/contracts/product/ProductServiceManager.sol +0 -42
  622. package/contracts/registry/RegistryAccessManager.sol +0 -196
  623. package/contracts/registry/ReleaseManager.sol +0 -563
  624. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  625. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  626. package/contracts/shared/ComponentVerifyingService.sol +0 -111
  627. package/contracts/shared/IKeyValueStore.sol +0 -53
  628. package/contracts/shared/KeyValueStore.sol +0 -130
  629. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  630. package/contracts/staking/IStakingManager.sol +0 -15
  631. package/contracts/staking/IStakingStore.sol +0 -130
  632. package/contracts/staking/StakeManagerLib.sol +0 -156
@@ -1,48 +1,26 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
5
- // import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
6
-
7
- import {IRegistry} from "./IRegistry.sol";
8
- import {IInstance} from "../instance/IInstance.sol";
9
-
10
4
  import {IComponent} from "../../contracts/shared/IComponent.sol";
5
+ import {IDistributionComponent} from "../../contracts/distribution/IDistributionComponent.sol";
6
+ import {IInstance} from "../instance/IInstance.sol";
11
7
  import {IPoolComponent} from "../../contracts/pool/IPoolComponent.sol";
12
8
  import {IProductComponent} from "../../contracts/product/IProductComponent.sol";
13
- import {IDistributionComponent} from "../../contracts/distribution/IDistributionComponent.sol";
14
-
15
- import {IVersionable} from "../../contracts/shared/IVersionable.sol";
16
- import {Versionable} from "../../contracts/shared/Versionable.sol";
17
9
  import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
18
- import {Registerable} from "../../contracts/shared/Registerable.sol";
10
+ import {IRegistry} from "./IRegistry.sol";
11
+ import {IRegistryService} from "./IRegistryService.sol";
19
12
 
20
- import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/type/RoleId.sol";
21
13
  import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE} from "../../contracts/type/ObjectType.sol";
22
- import {StateId, ACTIVE, PAUSED} from "../../contracts/type/StateId.sol";
23
14
  import {NftId, NftIdLib} from "../../contracts/type/NftId.sol";
24
- import {Fee, FeeLib} from "../../contracts/type/Fee.sol";
25
- import {Version, VersionPart, VersionLib} from "../../contracts/type/Version.sol";
26
-
27
15
  import {Service} from "../shared/Service.sol";
28
- import {IService} from "../shared/IService.sol";
29
- import {IRegistryService} from "./IRegistryService.sol";
30
- import {Registry} from "./Registry.sol";
31
16
 
32
17
  contract RegistryService is
33
18
  Service,
34
19
  IRegistryService
35
20
  {
36
- using NftIdLib for NftId;
37
-
38
21
  // TODO update to real hash when registry is stable
39
22
  bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
40
23
 
41
- // From IService
42
- function getDomain() public pure override returns(ObjectType serviceDomain) {
43
- return REGISTRY();
44
- }
45
-
46
24
  // from Versionable
47
25
 
48
26
  /// @dev top level initializer
@@ -52,15 +30,15 @@ contract RegistryService is
52
30
  )
53
31
  internal
54
32
  virtual override
55
- initializer()
33
+ onlyInitializing
56
34
  {
57
35
  (
58
- address registryAddress,
59
- address initialAuthority
36
+ address authority,
37
+ address registry
60
38
  ) = abi.decode(data, (address, address));
61
39
 
62
- initializeService(registryAddress, initialAuthority, owner);
63
- registerInterface(type(IRegistryService).interfaceId);
40
+ __Service_init(authority, registry, owner);
41
+ _registerInterface(type(IRegistryService).interfaceId);
64
42
  }
65
43
 
66
44
 
@@ -80,7 +58,7 @@ contract RegistryService is
80
58
  function registerInstance(IRegisterable instance, address owner)
81
59
  external
82
60
  virtual
83
- restricted
61
+ restricted()
84
62
  returns(
85
63
  IRegistry.ObjectInfo memory info
86
64
  )
@@ -95,29 +73,33 @@ contract RegistryService is
95
73
  instance.linkToRegisteredNftId(); // asume safe
96
74
  }
97
75
 
98
- function registerProduct(IComponent product, address owner)
76
+ function registerProduct(
77
+ IComponent product,
78
+ address initialOwner
79
+ )
99
80
  external
100
- restricted
81
+ virtual
82
+ restricted()
101
83
  returns(
102
84
  IRegistry.ObjectInfo memory info
103
85
  )
104
86
  {
105
- // CAN revert if no ERC165 support -> will revert with empty message
106
87
  if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
107
88
  revert ErrorRegistryServiceNotProduct(address(product));
108
89
  }
109
90
 
110
- info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
91
+ info = _getAndVerifyContractInfo(product, PRODUCT(), initialOwner);
111
92
  info.nftId = getRegistry().register(info);
112
93
  }
113
94
 
114
- function registerComponent(
95
+ function registerProductLinkedComponent(
115
96
  IComponent component,
116
97
  ObjectType objectType,
117
98
  address initialOwner
118
99
  )
119
100
  external
120
- restricted
101
+ virtual
102
+ restricted()
121
103
  returns(
122
104
  IRegistry.ObjectInfo memory info
123
105
  )
@@ -127,43 +109,18 @@ contract RegistryService is
127
109
  revert ErrorRegistryServiceNotComponent(address(component));
128
110
  }
129
111
 
130
- info = _getAndVerifyContractInfo(component, objectType, initialOwner);
131
- info.nftId = getRegistry().register(info);
132
- }
133
-
134
- function registerPool(IComponent pool, address owner)
135
- external
136
- restricted
137
- returns(
138
- IRegistry.ObjectInfo memory info
139
- )
140
- {
141
- if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
142
- revert ErrorRegistryServiceNotPool(address(pool));
143
- }
144
-
145
- info = _getAndVerifyContractInfo(pool, POOL(), owner);
146
- info.nftId = getRegistry().register(info);
147
- }
148
-
149
- function registerDistribution(IComponent distribution, address owner)
150
- external
151
- restricted
152
- returns(
153
- IRegistry.ObjectInfo memory info
154
- )
155
- {
156
- if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
157
- revert ErrorRegistryServiceNotDistribution(address(distribution));
112
+ if (!(objectType == DISTRIBUTION() || objectType == ORACLE() || objectType == POOL())) {
113
+ revert ErrorRegistryServiceNotProductLinkedComponent(address(component));
158
114
  }
159
115
 
160
- info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
116
+ info = _getAndVerifyContractInfo(component, objectType, initialOwner);
161
117
  info.nftId = getRegistry().register(info);
162
118
  }
163
119
 
164
120
  function registerDistributor(IRegistry.ObjectInfo memory info)
165
121
  external
166
- restricted
122
+ virtual
123
+ restricted()
167
124
  returns(NftId nftId)
168
125
  {
169
126
  _verifyObjectInfo(info, DISTRIBUTOR());
@@ -172,7 +129,8 @@ contract RegistryService is
172
129
 
173
130
  function registerPolicy(IRegistry.ObjectInfo memory info)
174
131
  external
175
- restricted
132
+ virtual
133
+ restricted()
176
134
  returns(NftId nftId)
177
135
  {
178
136
  _verifyObjectInfo(info, POLICY());
@@ -181,7 +139,8 @@ contract RegistryService is
181
139
 
182
140
  function registerBundle(IRegistry.ObjectInfo memory info)
183
141
  external
184
- restricted
142
+ virtual
143
+ restricted()
185
144
  returns(NftId nftId)
186
145
  {
187
146
  _verifyObjectInfo(info, BUNDLE());
@@ -190,7 +149,8 @@ contract RegistryService is
190
149
 
191
150
  function registerStake(IRegistry.ObjectInfo memory info)
192
151
  external
193
- restricted
152
+ virtual
153
+ restricted()
194
154
  returns(NftId nftId)
195
155
  {
196
156
  _verifyObjectInfo(info, STAKE());
@@ -205,6 +165,7 @@ contract RegistryService is
205
165
  address expectedOwner // assume can be 0 when given by other service
206
166
  )
207
167
  internal
168
+ virtual
208
169
  view
209
170
  returns(
210
171
  IRegistry.ObjectInfo memory info
@@ -244,10 +205,12 @@ contract RegistryService is
244
205
  ObjectType expectedType
245
206
  )
246
207
  internal
208
+ virtual
247
209
  view
248
210
  {
249
- // enforce instead of check
250
- info.objectAddress = address(0);
211
+ if(info.objectAddress > address(0)) {
212
+ revert ErrorRegistryServiceObjectAddressNotZero(info.objectType);
213
+ }
251
214
 
252
215
  if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
253
216
  revert ErrorRegistryServiceObjectTypeInvalid(expectedType, info.objectType);
@@ -259,8 +222,20 @@ contract RegistryService is
259
222
  revert ErrorRegistryServiceObjectOwnerZero(info.objectType);
260
223
  }
261
224
 
262
- if(getRegistry().isRegistered(owner)) {
263
- 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
+ }
264
234
  }
265
235
  }
236
+
237
+ // From IService
238
+ function _getDomain() internal override pure returns(ObjectType serviceDomain) {
239
+ return REGISTRY();
240
+ }
266
241
  }
@@ -1,15 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
- import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
6
-
7
- import {Registry} from "./Registry.sol";
8
- import {IVersionable} from "../shared/IVersionable.sol";
9
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
10
6
  import {RegistryService} from "./RegistryService.sol";
11
- import {TokenRegistry} from "./TokenRegistry.sol";
12
-
13
7
 
14
8
  contract RegistryServiceManager is
15
9
  ProxyManager
@@ -27,7 +21,6 @@ contract RegistryServiceManager is
27
21
  address registry, // used by implementation
28
22
  bytes32 salt
29
23
  )
30
- ProxyManager(registry)
31
24
  {
32
25
  if(authority == address(0)) {
33
26
  revert ErrorRegistryAccessManagerAuthorityZero();
@@ -37,27 +30,15 @@ contract RegistryServiceManager is
37
30
  revert ErrorRegistryAccessManagerRegistryZero();
38
31
  }
39
32
 
40
- // implementation's initializer func `data` argument
41
33
  RegistryService srv = new RegistryService{ salt: salt }();
42
- bytes memory data = abi.encode(registry, authority);
43
- IVersionable versionable = deployDetermenistic(
34
+ bytes memory data = abi.encode(authority, registry);
35
+ IVersionable versionable = initialize(
36
+ registry,
44
37
  address(srv),
45
38
  data,
46
39
  salt);
47
40
 
48
41
  _registryService = RegistryService(address(versionable));
49
-
50
- // _linkToNftOwnable(address(_registryService));
51
- }
52
-
53
- // // from IRegisterable
54
-
55
- // // IMPORTANT: registry here and in constructor MUST be the same
56
- function linkOwnershipToServiceNft()
57
- public
58
- onlyOwner
59
- {
60
- _linkToNftOwnable(address(_registryService));
61
42
  }
62
43
 
63
44
  //--- view functions ----------------------------------------------------//
@@ -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
+ }
@@ -0,0 +1,32 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {RELEASE} from "../type/ObjectType.sol";
5
+ import {SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
6
+ import {Lifecycle} from "../shared/Lifecycle.sol";
7
+
8
+ /// @dev Release lifeycle state machine.
9
+ /// Helper contract for ReleaseRegistry.
10
+ contract ReleaseLifecycle is
11
+ Lifecycle
12
+ {
13
+ constructor() {
14
+ _setupLifecycle();
15
+ }
16
+
17
+ function _setupLifecycle()
18
+ internal
19
+ override
20
+ {
21
+ setInitialState(RELEASE(), SCHEDULED());
22
+
23
+ setStateTransition(RELEASE(), SCHEDULED(), SKIPPED());
24
+ setStateTransition(RELEASE(), SCHEDULED(), DEPLOYING());
25
+ setStateTransition(RELEASE(), DEPLOYING(), SKIPPED());
26
+ setStateTransition(RELEASE(), DEPLOYING(), DEPLOYED());
27
+ setStateTransition(RELEASE(), DEPLOYED(), SKIPPED());
28
+ setStateTransition(RELEASE(), DEPLOYED(), ACTIVE());
29
+ setStateTransition(RELEASE(), ACTIVE(), PAUSED());
30
+ setStateTransition(RELEASE(), PAUSED(), ACTIVE());
31
+ }
32
+ }