@etherisc/gif-next 0.0.2-c6d46bb-892 → 0.0.2-c75d1c9-841

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 (586) hide show
  1. package/README.md +130 -10
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1494 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +615 -0
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  19. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1224 -0
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +382 -0
  24. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  27. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1225 -0
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +644 -0
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +153 -599
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +491 -451
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +218 -122
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +165 -336
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  41. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +344 -113
  42. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  44. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1461 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2018 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -0
  52. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  53. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1404 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1628 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2405 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +275 -79
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +277 -85
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +294 -194
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2036 -0
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +716 -0
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1601 -717
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +311 -236
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +171 -93
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1651 -770
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  92. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  108. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +938 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +632 -0
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  115. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +753 -0
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  118. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  119. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +854 -0
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1013 -0
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  124. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +772 -0
  125. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  126. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1231 -0
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  128. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +644 -0
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +355 -366
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +214 -102
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +221 -76
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +214 -423
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +554 -401
  139. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  140. package/artifacts/contracts/pool/Pool.sol/Pool.json +223 -624
  141. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  142. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +472 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +694 -710
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +228 -112
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +219 -242
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +188 -88
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  152. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1140 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  154. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +644 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +458 -332
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  158. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +222 -114
  159. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +155 -9
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +327 -16
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +399 -69
  165. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  166. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +195 -82
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  168. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +367 -231
  169. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  170. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +100 -62
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +440 -380
  173. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  174. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +727 -0
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +196 -124
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -324
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +192 -108
  181. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  182. package/artifacts/contracts/product/Product.sol/Product.json +409 -509
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  184. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  186. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  188. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +483 -29
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  192. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +291 -106
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  194. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  197. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  198. package/artifacts/contracts/registry/Registry.sol/Registry.json +978 -133
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  200. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2018 -0
  201. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  202. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  203. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  204. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +360 -241
  205. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +169 -91
  207. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  208. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  209. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  210. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  211. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1337 -0
  213. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  214. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  215. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  216. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +315 -139
  217. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Component.sol/Component.json +109 -296
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1021 -165
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +816 -0
  223. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +485 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +661 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  233. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +116 -141
  235. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1127 -0
  237. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +688 -0
  239. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  240. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +46 -14
  241. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  242. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  243. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
  245. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  247. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +154 -0
  249. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  250. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IService.sol/IService.json +74 -2
  252. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  254. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +776 -0
  256. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  257. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  258. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  259. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  260. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  261. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  262. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +26 -55
  264. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  265. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  266. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -90
  268. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  269. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  270. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  271. package/artifacts/contracts/shared/Service.sol/Service.json +67 -102
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +615 -6
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  276. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  278. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1491 -0
  280. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  281. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +711 -67
  282. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  283. package/artifacts/contracts/staking/Staking.sol/Staking.json +1904 -0
  284. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  286. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  288. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +800 -0
  290. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +560 -0
  292. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  293. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +801 -172
  294. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +744 -0
  296. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2297 -0
  298. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  299. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +617 -0
  300. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  301. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  302. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Amount.sol/AmountLib.json +122 -5
  304. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
  306. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  308. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  310. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Fee.sol/FeeLib.json +119 -58
  312. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  314. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  315. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  316. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +66 -4
  318. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  319. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  320. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +153 -4
  322. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  324. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  326. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  328. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  330. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +283 -6
  332. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
  334. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  336. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  338. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  340. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  342. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  344. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  346. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  348. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  350. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  351. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  352. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  354. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  356. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  357. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  358. package/contracts/accounting/AccountingService.sol +261 -0
  359. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  360. package/contracts/accounting/IAccountingService.sol +45 -0
  361. package/contracts/authorization/AccessAdmin.sol +704 -0
  362. package/contracts/authorization/AccessAdminLib.sol +183 -0
  363. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  364. package/contracts/authorization/Authorization.sol +365 -0
  365. package/contracts/authorization/IAccess.sol +57 -0
  366. package/contracts/authorization/IAccessAdmin.sol +170 -0
  367. package/contracts/authorization/IAuthorization.sol +80 -0
  368. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  369. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  370. package/contracts/distribution/BasicDistribution.sol +141 -0
  371. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  372. package/contracts/distribution/Distribution.sol +134 -175
  373. package/contracts/distribution/DistributionService.sol +252 -212
  374. package/contracts/distribution/DistributionServiceManager.sol +13 -25
  375. package/contracts/distribution/IDistributionComponent.sol +22 -50
  376. package/contracts/distribution/IDistributionService.sol +45 -29
  377. package/contracts/examples/fire/DamageLevel.sol +59 -0
  378. package/contracts/examples/fire/FirePool.sol +86 -0
  379. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  380. package/contracts/examples/fire/FireProduct.sol +433 -0
  381. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  382. package/contracts/examples/fire/FireUSD.sol +26 -0
  383. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  384. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  385. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  386. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  387. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  388. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  389. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  390. package/contracts/instance/BundleSet.sol +130 -0
  391. package/contracts/instance/IInstance.sol +77 -48
  392. package/contracts/instance/IInstanceService.sol +52 -37
  393. package/contracts/instance/Instance.sol +201 -126
  394. package/contracts/instance/InstanceAdmin.sol +450 -0
  395. package/contracts/instance/InstanceAuthorizationV3.sol +235 -0
  396. package/contracts/instance/InstanceReader.sol +358 -76
  397. package/contracts/instance/InstanceService.sol +324 -173
  398. package/contracts/instance/InstanceServiceManager.sol +14 -29
  399. package/contracts/instance/InstanceStore.sol +151 -64
  400. package/contracts/instance/RiskSet.sol +118 -0
  401. package/contracts/instance/base/BalanceStore.sol +123 -0
  402. package/contracts/instance/base/Cloneable.sol +2 -25
  403. package/contracts/instance/base/ObjectCounter.sol +20 -0
  404. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  405. package/contracts/instance/base/ObjectSet.sol +77 -0
  406. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  407. package/contracts/instance/module/IBundle.sol +6 -8
  408. package/contracts/instance/module/IComponents.sol +40 -19
  409. package/contracts/instance/module/IDistribution.sol +21 -9
  410. package/contracts/instance/module/IPolicy.sol +57 -30
  411. package/contracts/instance/module/IRisk.sol +5 -0
  412. package/contracts/mock/Dip.sol +26 -0
  413. package/contracts/oracle/BasicOracle.sol +45 -0
  414. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  415. package/contracts/oracle/IOracle.sol +41 -0
  416. package/contracts/oracle/IOracleComponent.sol +33 -0
  417. package/contracts/oracle/IOracleService.sol +66 -0
  418. package/contracts/oracle/Oracle.sol +154 -0
  419. package/contracts/oracle/OracleService.sol +310 -0
  420. package/contracts/oracle/OracleServiceManager.sol +39 -0
  421. package/contracts/pool/BasicPool.sol +173 -0
  422. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  423. package/contracts/pool/BundleService.sol +237 -224
  424. package/contracts/pool/BundleServiceManager.sol +13 -25
  425. package/contracts/pool/IBundleService.sol +35 -38
  426. package/contracts/pool/IPoolComponent.sol +23 -75
  427. package/contracts/pool/IPoolService.sol +107 -56
  428. package/contracts/pool/Pool.sol +209 -168
  429. package/contracts/pool/PoolLib.sol +309 -0
  430. package/contracts/pool/PoolService.sol +446 -262
  431. package/contracts/pool/PoolServiceManager.sol +12 -24
  432. package/contracts/product/ApplicationService.sol +177 -85
  433. package/contracts/product/ApplicationServiceManager.sol +12 -9
  434. package/contracts/product/BasicProduct.sol +49 -0
  435. package/contracts/product/BasicProductAuthorization.sol +56 -0
  436. package/contracts/product/ClaimService.sol +381 -183
  437. package/contracts/product/ClaimServiceManager.sol +12 -9
  438. package/contracts/product/IApplicationService.sol +10 -3
  439. package/contracts/product/IClaimService.sol +48 -6
  440. package/contracts/product/IPolicyService.sol +54 -39
  441. package/contracts/product/IPricingService.sol +14 -11
  442. package/contracts/product/IProductComponent.sol +31 -10
  443. package/contracts/product/IRiskService.sol +33 -0
  444. package/contracts/product/PolicyService.sol +498 -234
  445. package/contracts/product/PolicyServiceLib.sol +119 -0
  446. package/contracts/product/PolicyServiceManager.sol +12 -27
  447. package/contracts/product/PricingService.sol +116 -82
  448. package/contracts/product/PricingServiceManager.sol +12 -24
  449. package/contracts/product/Product.sol +236 -148
  450. package/contracts/product/RiskService.sol +154 -0
  451. package/contracts/product/RiskServiceManager.sol +39 -0
  452. package/contracts/registry/ChainNft.sol +79 -40
  453. package/contracts/registry/IRegistry.sol +95 -26
  454. package/contracts/registry/IRegistryService.sol +30 -34
  455. package/contracts/registry/IRelease.sol +29 -0
  456. package/contracts/registry/ITransferInterceptor.sol +1 -2
  457. package/contracts/registry/Registry.sol +460 -197
  458. package/contracts/registry/RegistryAdmin.sol +258 -0
  459. package/contracts/registry/RegistryAuthorization.sol +267 -0
  460. package/contracts/registry/RegistryService.sol +87 -131
  461. package/contracts/registry/RegistryServiceManager.sol +23 -30
  462. package/contracts/registry/ReleaseAdmin.sol +253 -0
  463. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  464. package/contracts/registry/ReleaseRegistry.sol +517 -0
  465. package/contracts/registry/ServiceAuthorizationV3.sol +332 -0
  466. package/contracts/registry/TokenRegistry.sol +264 -64
  467. package/contracts/shared/Component.sol +122 -183
  468. package/contracts/shared/ComponentService.sol +610 -99
  469. package/contracts/shared/ComponentServiceManager.sol +38 -0
  470. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  471. package/contracts/shared/ContractLib.sol +347 -0
  472. package/contracts/shared/IComponent.sol +17 -49
  473. package/contracts/shared/IComponentService.sol +110 -0
  474. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  475. package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
  476. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  477. package/contracts/shared/INftOwnable.sol +3 -1
  478. package/contracts/shared/IPolicyHolder.sol +12 -17
  479. package/contracts/shared/IRegisterable.sol +23 -1
  480. package/contracts/shared/IService.sol +11 -6
  481. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  482. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  483. package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
  484. package/contracts/shared/Lifecycle.sol +88 -0
  485. package/contracts/shared/NftIdSet.sol +65 -0
  486. package/contracts/shared/NftOwnable.sol +33 -24
  487. package/contracts/shared/PolicyHolder.sol +18 -50
  488. package/contracts/shared/Registerable.sol +54 -23
  489. package/contracts/shared/RegistryLinked.sol +9 -14
  490. package/contracts/shared/Service.sol +33 -40
  491. package/contracts/shared/TokenHandler.sol +320 -13
  492. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  493. package/contracts/staking/IStaking.sol +179 -0
  494. package/contracts/staking/IStakingService.sol +120 -47
  495. package/contracts/staking/Staking.sol +546 -0
  496. package/contracts/staking/StakingLib.sol +281 -0
  497. package/contracts/staking/StakingLifecycle.sol +23 -0
  498. package/contracts/staking/StakingManager.sol +52 -0
  499. package/contracts/staking/StakingReader.sol +180 -0
  500. package/contracts/staking/StakingService.sol +349 -48
  501. package/contracts/staking/{StakeingServiceManager.sol → StakingServiceManager.sol} +15 -7
  502. package/contracts/staking/StakingStore.sol +606 -0
  503. package/contracts/staking/TargetManagerLib.sol +211 -0
  504. package/contracts/type/AddressSet.sol +1 -1
  505. package/contracts/type/Amount.sol +44 -3
  506. package/contracts/type/Blocknumber.sol +26 -3
  507. package/contracts/type/ClaimId.sol +6 -1
  508. package/contracts/type/Fee.sol +22 -21
  509. package/contracts/type/Key32.sol +2 -2
  510. package/contracts/type/Key32Set.sol +62 -0
  511. package/contracts/type/NftId.sol +21 -16
  512. package/contracts/type/NftIdSet.sol +1 -1
  513. package/contracts/type/ObjectType.sol +191 -59
  514. package/contracts/type/PayoutId.sol +10 -10
  515. package/contracts/type/Referral.sol +2 -1
  516. package/contracts/type/RequestId.sol +75 -0
  517. package/contracts/type/RiskId.sol +39 -7
  518. package/contracts/type/RoleId.sol +118 -68
  519. package/contracts/type/Seconds.sol +48 -1
  520. package/contracts/type/Selector.sol +107 -0
  521. package/contracts/type/StateId.sol +41 -2
  522. package/contracts/type/String.sol +53 -0
  523. package/contracts/type/Timestamp.sol +16 -7
  524. package/contracts/type/UFixed.sol +61 -125
  525. package/contracts/type/Version.sol +58 -7
  526. package/contracts/{shared → upgradeability}/ProxyManager.sol +101 -36
  527. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +8 -4
  528. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  529. package/package.json +12 -8
  530. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  531. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  532. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  533. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  534. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  535. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  536. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  537. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  538. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  539. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  540. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  541. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  542. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  543. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  544. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  546. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  547. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  549. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  550. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  551. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -864
  552. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  553. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  554. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  555. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  556. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  557. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  558. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  559. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  560. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  561. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  562. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  563. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  564. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  565. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  566. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  567. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  568. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +0 -4
  569. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +0 -628
  570. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  571. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  572. package/contracts/instance/BundleManager.sol +0 -126
  573. package/contracts/instance/InstanceAccessManager.sol +0 -543
  574. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  575. package/contracts/instance/base/Lifecycle.sol +0 -121
  576. package/contracts/instance/base/ObjectManager.sol +0 -82
  577. package/contracts/instance/module/IAccess.sol +0 -54
  578. package/contracts/instance/module/ISetup.sol +0 -33
  579. package/contracts/instance/module/ITreasury.sol +0 -23
  580. package/contracts/product/IProductService.sol +0 -40
  581. package/contracts/product/ProductService.sol +0 -210
  582. package/contracts/product/ProductServiceManager.sol +0 -54
  583. package/contracts/registry/RegistryAccessManager.sol +0 -216
  584. package/contracts/registry/ReleaseManager.sol +0 -328
  585. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  586. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -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";
19
-
20
- import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/type/RoleId.sol";
21
- import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, PRICE} from "../../contracts/type/ObjectType.sol";
22
- import {StateId, ACTIVE, PAUSED} from "../../contracts/type/StateId.sol";
23
- import {NftId, NftIdLib, zeroNftId} from "../../contracts/type/NftId.sol";
24
- import {Fee, FeeLib} from "../../contracts/type/Fee.sol";
25
- import {Version, VersionPart, VersionLib} from "../../contracts/type/Version.sol";
10
+ import {IRegistry} from "./IRegistry.sol";
11
+ import {IRegistryService} from "./IRegistryService.sol";
26
12
 
13
+ import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE} from "../../contracts/type/ObjectType.sol";
14
+ import {NftId, NftIdLib} from "../../contracts/type/NftId.sol";
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
@@ -55,24 +33,38 @@ contract RegistryService is
55
33
  initializer()
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);
40
+ __Service_init(authority, registry, owner);
41
+ _registerInterface(type(IRegistryService).interfaceId);
42
+ }
63
43
 
64
- registerInterface(type(IRegistryService).interfaceId);
44
+
45
+ function registerStaking(IRegisterable staking, address owner)
46
+ external
47
+ virtual
48
+ restricted()
49
+ returns(
50
+ IRegistry.ObjectInfo memory info
51
+ )
52
+ {
53
+ info = _getAndVerifyContractInfo(staking, STAKING(), owner);
54
+ info.nftId = getRegistry().register(info);
65
55
  }
66
56
 
57
+
67
58
  function registerInstance(IRegisterable instance, address owner)
68
59
  external
69
- restricted
60
+ virtual
61
+ restricted()
70
62
  returns(
71
63
  IRegistry.ObjectInfo memory info
72
64
  )
73
65
  {
74
66
  if(!instance.supportsInterface(type(IInstance).interfaceId)) {
75
- revert NotInstance();
67
+ revert ErrorRegistryServiceNotInstance(address(instance));
76
68
  }
77
69
 
78
70
  info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
@@ -81,55 +73,54 @@ contract RegistryService is
81
73
  instance.linkToRegisteredNftId(); // asume safe
82
74
  }
83
75
 
84
- function registerProduct(IComponent product, address owner)
76
+ function registerProduct(
77
+ IComponent product,
78
+ address initialOwner
79
+ )
85
80
  external
86
- restricted
81
+ virtual
82
+ restricted()
87
83
  returns(
88
84
  IRegistry.ObjectInfo memory info
89
85
  )
90
86
  {
91
- // CAN revert if no ERC165 support -> will revert with empty message
92
87
  if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
93
- revert NotProduct();
88
+ revert ErrorRegistryServiceNotProduct(address(product));
94
89
  }
95
90
 
96
- info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
91
+ info = _getAndVerifyContractInfo(product, PRODUCT(), initialOwner);
97
92
  info.nftId = getRegistry().register(info);
98
93
  }
99
94
 
100
- function registerPool(IComponent pool, address owner)
95
+ function registerProductLinkedComponent(
96
+ IComponent component,
97
+ ObjectType objectType,
98
+ address initialOwner
99
+ )
101
100
  external
102
- restricted
101
+ virtual
102
+ restricted()
103
103
  returns(
104
104
  IRegistry.ObjectInfo memory info
105
105
  )
106
106
  {
107
- if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
108
- revert NotPool();
107
+ // CAN revert if no ERC165 support -> will revert with empty message
108
+ if(!component.supportsInterface(type(IComponent).interfaceId)) {
109
+ revert ErrorRegistryServiceNotComponent(address(component));
109
110
  }
110
111
 
111
- info = _getAndVerifyContractInfo(pool, POOL(), owner);
112
- info.nftId = getRegistry().register(info);
113
- }
114
-
115
- function registerDistribution(IComponent distribution, address owner)
116
- external
117
- restricted
118
- returns(
119
- IRegistry.ObjectInfo memory info
120
- )
121
- {
122
- if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
123
- revert NotDistribution();
112
+ if (!(objectType == DISTRIBUTION() || objectType == ORACLE() || objectType == POOL())) {
113
+ revert ErrorRegistryServiceNotProductLinkedComponent(address(component));
124
114
  }
125
115
 
126
- info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
116
+ info = _getAndVerifyContractInfo(component, objectType, initialOwner);
127
117
  info.nftId = getRegistry().register(info);
128
118
  }
129
119
 
130
120
  function registerDistributor(IRegistry.ObjectInfo memory info)
131
121
  external
132
- restricted
122
+ virtual
123
+ restricted()
133
124
  returns(NftId nftId)
134
125
  {
135
126
  _verifyObjectInfo(info, DISTRIBUTOR());
@@ -138,87 +129,34 @@ contract RegistryService is
138
129
 
139
130
  function registerPolicy(IRegistry.ObjectInfo memory info)
140
131
  external
141
- restricted
132
+ virtual
133
+ restricted()
142
134
  returns(NftId nftId)
143
135
  {
144
136
  _verifyObjectInfo(info, POLICY());
145
-
146
137
  nftId = getRegistry().register(info);
147
138
  }
148
139
 
149
140
  function registerBundle(IRegistry.ObjectInfo memory info)
150
141
  external
151
- restricted
142
+ virtual
143
+ restricted()
152
144
  returns(NftId nftId)
153
145
  {
154
146
  _verifyObjectInfo(info, BUNDLE());
155
-
156
147
  nftId = getRegistry().register(info);
157
148
  }
158
149
 
159
150
  function registerStake(IRegistry.ObjectInfo memory info)
160
151
  external
161
- restricted
152
+ virtual
153
+ restricted()
162
154
  returns(NftId nftId)
163
155
  {
164
156
  _verifyObjectInfo(info, STAKE());
165
-
166
157
  nftId = getRegistry().register(info);
167
158
  }
168
159
 
169
- // from IRegisterable
170
-
171
- function getFunctionConfigs()
172
- external
173
- pure
174
- returns(
175
- FunctionConfig[] memory config
176
- )
177
- {
178
- config = new FunctionConfig[](9);
179
-
180
- // order of service registrations MUST be reverse to this array
181
- /*config[-1].serviceDomain = STAKE();
182
- config[-1].selector = RegistryService.registerStake.selector;*/
183
-
184
- config[0].serviceDomain = POLICY();
185
- config[0].selectors = new bytes4[](0);
186
-
187
- config[1].serviceDomain = APPLICATION();
188
- config[1].selectors = new bytes4[](1);
189
- config[1].selectors[0] = RegistryService.registerPolicy.selector;
190
-
191
- config[2].serviceDomain = CLAIM();
192
- config[2].selectors = new bytes4[](0);
193
-
194
- config[3].serviceDomain = PRODUCT();
195
- config[3].selectors = new bytes4[](1);
196
- config[3].selectors[0] = RegistryService.registerProduct.selector;
197
-
198
- config[4].serviceDomain = POOL();
199
- config[4].selectors = new bytes4[](1);
200
- config[4].selectors[0] = RegistryService.registerPool.selector;
201
-
202
- // registration of bundle service must preceed registration of pool service
203
- config[5].serviceDomain = BUNDLE();
204
- config[5].selectors = new bytes4[](1);
205
- config[5].selectors[0] = RegistryService.registerBundle.selector;
206
-
207
- // registration of pricing service must preceed registration of application service
208
- config[6].serviceDomain = PRICE();
209
- config[6].selectors = new bytes4[](0);
210
-
211
- // registration of distribution service must preceed registration of pricing service
212
- config[7].serviceDomain = DISTRIBUTION();
213
- config[7].selectors = new bytes4[](2);
214
- config[7].selectors[0] = RegistryService.registerDistribution.selector;
215
- config[7].selectors[1] = RegistryService.registerDistributor.selector;
216
-
217
- config[8].serviceDomain = INSTANCE();
218
- config[8].selectors = new bytes4[](1);
219
- config[8].selectors[0] = RegistryService.registerInstance.selector;
220
- }
221
-
222
160
  // Internal
223
161
 
224
162
  function _getAndVerifyContractInfo(
@@ -227,34 +165,38 @@ contract RegistryService is
227
165
  address expectedOwner // assume can be 0 when given by other service
228
166
  )
229
167
  internal
230
- // view
168
+ virtual
169
+ view
231
170
  returns(
232
171
  IRegistry.ObjectInfo memory info
233
172
  )
234
173
  {
235
174
  info = registerable.getInitialInfo();
236
- info.objectAddress = address(registerable);
175
+
176
+ if(info.objectAddress != address(registerable)) {
177
+ revert ErrorRegistryServiceRegisterableAddressInvalid(registerable, info.objectAddress);
178
+ }
237
179
 
238
180
  if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
239
- revert UnexpectedRegisterableType(expectedType, info.objectType);
181
+ revert ErrorRegistryServiceRegisterableTypeInvalid(registerable, expectedType, info.objectType);
240
182
  }
241
183
 
242
184
  address owner = info.initialOwner;
243
185
 
244
186
  if(owner != expectedOwner) { // registerable owner protection
245
- revert NotRegisterableOwner(expectedOwner);
187
+ revert ErrorRegistryServiceRegisterableOwnerInvalid(registerable, expectedOwner, owner);
246
188
  }
247
189
 
248
190
  if(owner == address(registerable)) {
249
- revert SelfRegistration();
191
+ revert ErrorRegistryServiceRegisterableSelfRegistration(registerable);
250
192
  }
251
193
 
252
194
  if(owner == address(0)) {
253
- revert RegisterableOwnerIsZero();
195
+ revert ErrorRegistryServiceRegisterableOwnerZero(registerable);
254
196
  }
255
197
 
256
198
  if(getRegistry().isRegistered(owner)) {
257
- revert RegisterableOwnerIsRegistered();
199
+ revert ErrorRegistryServiceRegisterableOwnerRegistered(registerable, owner);
258
200
  }
259
201
  }
260
202
 
@@ -263,23 +205,37 @@ contract RegistryService is
263
205
  ObjectType expectedType
264
206
  )
265
207
  internal
208
+ virtual
266
209
  view
267
210
  {
268
- // enforce instead of check
269
- info.objectAddress = address(0);
211
+ if(info.objectAddress > address(0)) {
212
+ revert ErrorRegistryServiceObjectAddressNotZero(info.objectType);
213
+ }
270
214
 
271
215
  if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
272
- revert UnexpectedRegisterableType(expectedType, info.objectType);
216
+ revert ErrorRegistryServiceObjectTypeInvalid(expectedType, info.objectType);
273
217
  }
274
218
 
275
219
  address owner = info.initialOwner;
276
220
 
277
221
  if(owner == address(0)) {
278
- revert RegisterableOwnerIsZero();
222
+ revert ErrorRegistryServiceObjectOwnerZero(info.objectType);
279
223
  }
280
224
 
281
- if(getRegistry().isRegistered(owner)) {
282
- revert RegisterableOwnerIsRegistered();
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
+ }
283
234
  }
284
235
  }
285
- }
236
+
237
+ // From IService
238
+ function _getDomain() internal override pure returns(ObjectType serviceDomain) {
239
+ return REGISTRY();
240
+ }
241
+ }
@@ -1,51 +1,44 @@
1
- // SPDX-License-Identifier: UNLICENSED
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
-
6
- import {Registry} from "./Registry.sol";
7
- import {IVersionable} from "../shared/IVersionable.sol";
8
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
9
6
  import {RegistryService} from "./RegistryService.sol";
10
- import {TokenRegistry} from "./TokenRegistry.sol";
11
-
12
7
 
13
8
  contract RegistryServiceManager is
14
9
  ProxyManager
15
10
  {
11
+ error ErrorRegistryAccessManagerAuthorityZero();
12
+ error ErrorRegistryAccessManagerRegistryZero();
13
+
16
14
  bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
17
15
 
18
16
  RegistryService private immutable _registryService;
19
17
 
20
18
  /// @dev initializes proxy manager with registry service implementation and deploys registry
21
19
  constructor(
22
- address initialAuthority, // used by implementation
23
- address registryAddress) // used by implementation
24
- ProxyManager(registryAddress)
20
+ address authority, // used by implementation
21
+ address registry, // used by implementation
22
+ bytes32 salt
23
+ )
25
24
  {
26
- require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
27
- require(registryAddress > address(0), "RegistryServiceManager: registry is 0");
25
+ if(authority == address(0)) {
26
+ revert ErrorRegistryAccessManagerAuthorityZero();
27
+ }
28
+
29
+ if(registry == address(0)) {
30
+ revert ErrorRegistryAccessManagerRegistryZero();
31
+ }
28
32
 
29
- // implementation's initializer func `data` argument
30
- RegistryService srv = new RegistryService();
31
- bytes memory data = abi.encode(registryAddress, initialAuthority);
32
- IVersionable versionable = deploy(
33
+ RegistryService srv = new RegistryService{ salt: salt }();
34
+ bytes memory data = abi.encode(authority, registry);
35
+ IVersionable versionable = initialize(
36
+ registry,
33
37
  address(srv),
34
- data);
38
+ data,
39
+ salt);
35
40
 
36
41
  _registryService = RegistryService(address(versionable));
37
-
38
- // _linkToNftOwnable(address(_registryService));
39
- }
40
-
41
- // // from IRegisterable
42
-
43
- // // IMPORTANT: registry here and in constructor MUST be the same
44
- function linkOwnershipToServiceNft()
45
- public
46
- onlyOwner
47
- {
48
- _linkToNftOwnable(address(_registryService));
49
42
  }
50
43
 
51
44
  //--- view functions ----------------------------------------------------//
@@ -0,0 +1,253 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
5
+ import {AccessAdminLib} from "../authorization/AccessAdminLib.sol";
6
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
7
+ import {IAccess} from "../authorization/IAccess.sol";
8
+ import {IService} from "../shared/IService.sol";
9
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
10
+ import {ObjectType, ObjectTypeLib, ALL} from "../type/ObjectType.sol";
11
+ import {RoleId, RoleIdLib, ADMIN_ROLE, RELEASE_REGISTRY_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
12
+ import {VersionPart} from "../type/Version.sol";
13
+
14
+ /// @dev The ReleaseAdmin contract implements the central authorization for the services of a specific release.
15
+ /// There is one ReleaseAdmin contract per major GIF release.
16
+ /// Locking/unlocking of all services of a release is implemented in function setReleaseLocked.
17
+ contract ReleaseAdmin is
18
+ AccessAdmin
19
+ {
20
+ event LogReleaseAdminReleaseLockChanged(VersionPart release, bool locked);
21
+ event LogReleaseAdminServiceLockChanged(VersionPart release, address service, bool locked);
22
+
23
+ error ErrorReleaseAdminCallerNotReleaseRegistry(address caller);
24
+ error ErrorReleaseAdminNotService(address notService);
25
+ error ErrorReleaseAdminReleaseLockAlreadySetTo(bool locked);
26
+
27
+ /// @dev release core roles
28
+ string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
29
+
30
+ /// @dev release core targets
31
+ string public constant RELEASE_ADMIN_TARGET_NAME = "ReleaseAdmin";
32
+
33
+
34
+ modifier onlyReleaseRegistry() {
35
+ (bool isMember, ) = _authority.hasRole(RELEASE_REGISTRY_ROLE().toInt(), msg.sender);
36
+ if(!isMember) {
37
+ revert ErrorReleaseAdminCallerNotReleaseRegistry(msg.sender);
38
+ }
39
+ _;
40
+ }
41
+
42
+ // @dev Only used for master release admin
43
+ constructor(address accessManager) {
44
+ initialize(
45
+ accessManager,
46
+ "MasterReleaseAdmin");
47
+ }
48
+
49
+
50
+ function completeSetup(
51
+ address registry,
52
+ address releaseRegistry,
53
+ VersionPart release
54
+ )
55
+ external
56
+ reinitializer(uint64(release.toInt()))
57
+ {
58
+
59
+ // checks
60
+ _checkRegistry(registry);
61
+
62
+ AccessManagerCloneable(
63
+ authority()).completeSetup(
64
+ registry,
65
+ release);
66
+
67
+ // link nft ownability to registry
68
+ _linkToNftOwnable(registry);
69
+
70
+ _setupReleaseRegistry(releaseRegistry);
71
+ }
72
+
73
+ /// @dev Sets up authorizaion for specified service.
74
+ /// For all authorized services its authorized functions are enabled.
75
+ /// Permissioned function: Access is restricted to release registry.
76
+ function authorizeService(
77
+ IServiceAuthorization serviceAuthorization,
78
+ IService service,
79
+ ObjectType serviceDomain,
80
+ VersionPart release
81
+ )
82
+ external
83
+ restricted()
84
+ {
85
+ _createServiceTargetAndRole(service, serviceDomain, release);
86
+ _authorizeServiceFunctions(serviceAuthorization, service, serviceDomain, release);
87
+ }
88
+
89
+ /// @dev Locks/unlocks all release targets.
90
+ /// For all authorized services of release its authorized functions are disabled/enabled.
91
+ /// Permissioned function: Access is restricted to release registry.
92
+ /// Note: onlyReleaseRegistry() modifier is used to prevent dead lock.
93
+ function setReleaseLocked(bool locked)
94
+ external
95
+ onlyReleaseRegistry()
96
+ {
97
+ // checks
98
+ AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
99
+ if(accessManager.isLocked() == locked) {
100
+ revert ErrorReleaseAdminReleaseLockAlreadySetTo(locked);
101
+ }
102
+
103
+ // effects
104
+ accessManager.setLocked(locked);
105
+
106
+ emit LogReleaseAdminReleaseLockChanged(getRelease(), locked);
107
+ }
108
+
109
+ /// @dev Lock/unlock specific service of release.
110
+ /// Permissioned function: Access is restricted to release registry.
111
+ function setServiceLocked(IService service, bool locked)
112
+ external
113
+ restricted()
114
+ {
115
+ // assume all targets except release admin are services
116
+ // ensure release admin can not be locked
117
+ if(address(service) == address(this)) {
118
+ revert ErrorReleaseAdminNotService(address(service));
119
+ }
120
+
121
+ _setTargetLocked(address(service), locked);
122
+
123
+ emit LogReleaseAdminServiceLockChanged(service.getRelease(), address(service), locked);
124
+ }
125
+
126
+ //--- view functions ----------------------------------------------------//
127
+
128
+ /*
129
+ function getReleaseAdminRole() external view returns (RoleId) {
130
+ return GIF_ADMIN_ROLE();
131
+ }
132
+ */
133
+ //--- private functions -------------------------------------------------//
134
+
135
+ function _createServiceTargetAndRole(
136
+ IService service,
137
+ ObjectType serviceDomain,
138
+ VersionPart release
139
+ )
140
+ private
141
+ {
142
+ string memory baseName = ObjectTypeLib.toName(serviceDomain);
143
+
144
+ // create service target
145
+ string memory serviceTargetName = ObjectTypeLib.toVersionedName(
146
+ baseName, "Service", release);
147
+
148
+ _createTarget(
149
+ address(service),
150
+ serviceTargetName,
151
+ true,
152
+ false);
153
+
154
+ // create service role
155
+ RoleId serviceRoleId = RoleIdLib.roleForTypeAndVersion(
156
+ serviceDomain,
157
+ release);
158
+
159
+ if(!roleExists(serviceRoleId)) {
160
+ _createRole(
161
+ serviceRoleId,
162
+ AccessAdminLib.toRole({
163
+ adminRoleId: ADMIN_ROLE(),
164
+ roleType: RoleType.Contract,
165
+ maxMemberCount: 1,
166
+ name: ObjectTypeLib.toVersionedName(
167
+ baseName,
168
+ "ServiceRole",
169
+ release)}));
170
+ }
171
+
172
+ _grantRoleToAccount(
173
+ serviceRoleId,
174
+ address(service));
175
+ }
176
+
177
+
178
+ function _authorizeServiceFunctions(
179
+ IServiceAuthorization serviceAuthorization,
180
+ IService service,
181
+ ObjectType serviceDomain,
182
+ VersionPart release
183
+ )
184
+ private
185
+ {
186
+ ObjectType authorizedDomain;
187
+ RoleId authorizedRoleId;
188
+
189
+ ObjectType[] memory authorizedDomains = serviceAuthorization.getAuthorizedDomains(serviceDomain);
190
+
191
+ for (uint256 i = 0; i < authorizedDomains.length; i++) {
192
+ authorizedDomain = authorizedDomains[i];
193
+
194
+ // derive authorized role from authorized domain
195
+ if (authorizedDomain == ALL()) {
196
+ authorizedRoleId = PUBLIC_ROLE();
197
+ } else {
198
+ authorizedRoleId = RoleIdLib.roleForTypeAndVersion(
199
+ authorizedDomain,
200
+ release);
201
+ }
202
+
203
+ if(!roleExists(authorizedRoleId)) {
204
+ // create role for authorized domain
205
+ _createRole(
206
+ authorizedRoleId,
207
+ AccessAdminLib.toRole({
208
+ adminRoleId: ADMIN_ROLE(),
209
+ roleType: RoleType.Contract,
210
+ maxMemberCount: 1,
211
+ name: ObjectTypeLib.toVersionedName(
212
+ ObjectTypeLib.toName(authorizedDomain),
213
+ "Role",
214
+ release)}));
215
+ }
216
+
217
+ // get authorized functions for authorized domain
218
+ IAccess.FunctionInfo[] memory authorizatedFunctions = serviceAuthorization.getAuthorizedFunctions(
219
+ serviceDomain,
220
+ authorizedDomain);
221
+
222
+ _authorizeTargetFunctions(
223
+ address(service),
224
+ authorizedRoleId,
225
+ authorizatedFunctions);
226
+ }
227
+ }
228
+
229
+ //--- private initialization functions -------------------------------------------//
230
+
231
+ function _setupReleaseRegistry(address releaseRegistry)
232
+ private
233
+ onlyInitializing()
234
+ {
235
+ _createTarget(address(this), RELEASE_ADMIN_TARGET_NAME, false, false);
236
+
237
+ _createRole(
238
+ RELEASE_REGISTRY_ROLE(),
239
+ AccessAdminLib.toRole({
240
+ adminRoleId: ADMIN_ROLE(),
241
+ roleType: RoleType.Contract,
242
+ maxMemberCount: 1,
243
+ name: RELEASE_REGISTRY_ROLE_NAME}));
244
+
245
+ FunctionInfo[] memory functions;
246
+ functions = new FunctionInfo[](2);
247
+ functions[0] = AccessAdminLib.toFunction(ReleaseAdmin.authorizeService.selector, "authorizeService");
248
+ functions[1] = AccessAdminLib.toFunction(ReleaseAdmin.setServiceLocked.selector, "setServiceLocked");
249
+ _authorizeTargetFunctions(address(this), RELEASE_REGISTRY_ROLE(), functions);
250
+
251
+ _grantRoleToAccount(RELEASE_REGISTRY_ROLE(), releaseRegistry);
252
+ }
253
+ }