@etherisc/gif-next 0.0.2-d16f92c-416 → 0.0.2-d1ee1ae-450

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 (592) hide show
  1. package/README.md +120 -8
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +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/authorization/IAccess.sol/IAccess.json +10 -0
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +404 -369
  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/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +48 -10
  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 +119 -605
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +487 -269
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +169 -119
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +133 -279
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  41. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +311 -67
  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 +239 -55
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +155 -116
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +254 -182
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1581 -253
  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 +1153 -396
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +175 -341
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +104 -128
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +940 -754
  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 +1 -1
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  92. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  101. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  106. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +938 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +632 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +130 -136
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +121 -413
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +169 -190
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +140 -98
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  125. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1231 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +644 -0
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +349 -206
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +159 -105
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +212 -35
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +128 -396
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +460 -308
  138. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  139. package/artifacts/contracts/pool/Pool.sol/Pool.json +125 -684
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  141. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +472 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +705 -552
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +189 -107
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +208 -176
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +118 -100
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1140 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +644 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +431 -234
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +158 -124
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +136 -9
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  165. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +157 -83
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +270 -268
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  169. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +88 -8
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +465 -307
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +727 -0
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +155 -109
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.json +244 -329
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +126 -140
  180. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  181. package/artifacts/contracts/product/Product.sol/Product.json +268 -567
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +367 -63
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +72 -152
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  196. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  197. package/artifacts/contracts/registry/Registry.sol/Registry.json +600 -127
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +666 -549
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  201. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  205. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +104 -90
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1337 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  213. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +101 -16
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  215. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  216. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  217. package/artifacts/contracts/shared/Component.sol/Component.json +67 -277
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +545 -569
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +152 -132
  222. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  223. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  224. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +661 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  232. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +80 -100
  234. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +499 -252
  236. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +116 -133
  238. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -3
  240. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  241. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  242. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  243. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  244. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  246. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  248. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  250. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  251. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  252. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  253. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  254. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +106 -366
  255. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  256. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -88
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  258. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  260. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  262. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  264. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  266. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  268. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  269. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  270. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  276. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  278. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +196 -143
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  280. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +155 -23
  281. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  282. package/artifacts/contracts/staking/Staking.sol/Staking.json +292 -393
  283. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  284. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  285. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  286. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  288. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +142 -103
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +41 -73
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  292. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +224 -171
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  294. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +121 -95
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  296. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +218 -182
  297. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  298. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +94 -48
  299. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  300. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  301. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Amount.sol/AmountLib.json +63 -10
  303. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  305. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  307. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  309. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  311. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  313. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  314. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  315. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  317. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  318. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  319. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +59 -4
  321. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  323. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  325. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  327. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  329. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +181 -14
  331. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  333. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  335. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  337. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  339. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  341. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  343. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  345. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  346. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  347. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  348. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  349. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  350. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  351. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  352. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  353. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  354. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  355. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  356. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  357. package/contracts/accounting/AccountingService.sol +261 -0
  358. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  359. package/contracts/accounting/IAccountingService.sol +45 -0
  360. package/contracts/authorization/AccessAdmin.sol +704 -0
  361. package/contracts/authorization/AccessAdminLib.sol +183 -0
  362. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  363. package/contracts/authorization/Authorization.sol +365 -0
  364. package/contracts/authorization/IAccess.sol +57 -0
  365. package/contracts/authorization/IAccessAdmin.sol +170 -0
  366. package/contracts/authorization/IAuthorization.sol +80 -0
  367. package/contracts/{registry → authorization}/IServiceAuthorization.sol +11 -6
  368. package/contracts/{registry → authorization}/ServiceAuthorization.sol +45 -25
  369. package/contracts/distribution/BasicDistribution.sol +141 -0
  370. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  371. package/contracts/distribution/Distribution.sol +124 -139
  372. package/contracts/distribution/DistributionService.sol +220 -126
  373. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  374. package/contracts/distribution/IDistributionComponent.sol +19 -42
  375. package/contracts/distribution/IDistributionService.sol +44 -22
  376. package/contracts/examples/fire/DamageLevel.sol +59 -0
  377. package/contracts/examples/fire/FirePool.sol +86 -0
  378. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  379. package/contracts/examples/fire/FireProduct.sol +433 -0
  380. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  381. package/contracts/examples/fire/FireUSD.sol +26 -0
  382. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  383. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  384. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  385. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  386. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  387. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  388. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  389. package/contracts/instance/BundleSet.sol +130 -0
  390. package/contracts/instance/IInstance.sol +68 -49
  391. package/contracts/instance/IInstanceService.sol +34 -43
  392. package/contracts/instance/Instance.sol +164 -122
  393. package/contracts/instance/InstanceAdmin.sol +363 -244
  394. package/contracts/instance/InstanceAuthorizationV3.sol +236 -0
  395. package/contracts/instance/InstanceReader.sol +306 -48
  396. package/contracts/instance/InstanceService.sol +223 -200
  397. package/contracts/instance/InstanceServiceManager.sol +8 -13
  398. package/contracts/instance/InstanceStore.sol +35 -6
  399. package/contracts/instance/RiskSet.sol +118 -0
  400. package/contracts/instance/base/BalanceStore.sol +3 -5
  401. package/contracts/instance/base/ObjectCounter.sol +1 -2
  402. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  403. package/contracts/instance/base/ObjectSet.sol +77 -0
  404. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  405. package/contracts/instance/module/IBundle.sol +6 -5
  406. package/contracts/instance/module/IComponents.sol +30 -20
  407. package/contracts/instance/module/IDistribution.sol +21 -9
  408. package/contracts/instance/module/IPolicy.sol +50 -29
  409. package/contracts/instance/module/IRisk.sol +5 -0
  410. package/contracts/mock/Dip.sol +1 -1
  411. package/contracts/oracle/BasicOracle.sol +45 -0
  412. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  413. package/contracts/oracle/IOracle.sol +25 -4
  414. package/contracts/oracle/IOracleComponent.sol +2 -1
  415. package/contracts/oracle/IOracleService.sol +2 -1
  416. package/contracts/oracle/Oracle.sol +62 -53
  417. package/contracts/oracle/OracleService.sol +117 -85
  418. package/contracts/oracle/OracleServiceManager.sol +8 -11
  419. package/contracts/pool/BasicPool.sol +173 -0
  420. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  421. package/contracts/pool/BundleService.sol +204 -105
  422. package/contracts/pool/BundleServiceManager.sol +8 -11
  423. package/contracts/pool/IBundleService.sol +31 -22
  424. package/contracts/pool/IPoolComponent.sol +20 -70
  425. package/contracts/pool/IPoolService.sol +90 -75
  426. package/contracts/pool/Pool.sol +207 -163
  427. package/contracts/pool/PoolLib.sol +309 -0
  428. package/contracts/pool/PoolService.sol +391 -256
  429. package/contracts/pool/PoolServiceManager.sol +6 -9
  430. package/contracts/product/ApplicationService.sol +102 -78
  431. package/contracts/product/ApplicationServiceManager.sol +6 -6
  432. package/contracts/product/BasicProduct.sol +49 -0
  433. package/contracts/product/BasicProductAuthorization.sol +58 -0
  434. package/contracts/product/ClaimService.sol +373 -175
  435. package/contracts/product/ClaimServiceManager.sol +6 -6
  436. package/contracts/product/IApplicationService.sol +9 -2
  437. package/contracts/product/IClaimService.sol +44 -8
  438. package/contracts/product/IPolicyService.sol +53 -36
  439. package/contracts/product/IPricingService.sol +11 -10
  440. package/contracts/product/IProductComponent.sol +29 -9
  441. package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -8
  442. package/contracts/product/PolicyService.sol +436 -271
  443. package/contracts/product/PolicyServiceLib.sol +119 -0
  444. package/contracts/product/PolicyServiceManager.sol +6 -9
  445. package/contracts/product/PricingService.sol +69 -60
  446. package/contracts/product/PricingServiceManager.sol +6 -9
  447. package/contracts/product/Product.sol +232 -140
  448. package/contracts/product/RiskService.sol +157 -0
  449. package/contracts/product/RiskServiceManager.sol +39 -0
  450. package/contracts/registry/ChainNft.sol +72 -40
  451. package/contracts/registry/IRegistry.sol +78 -32
  452. package/contracts/registry/IRegistryService.sol +3 -10
  453. package/contracts/registry/IRelease.sol +29 -0
  454. package/contracts/registry/ITransferInterceptor.sol +1 -2
  455. package/contracts/registry/Registry.sol +368 -220
  456. package/contracts/registry/RegistryAdmin.sol +174 -249
  457. package/contracts/registry/RegistryAuthorization.sol +271 -0
  458. package/contracts/registry/RegistryService.sol +41 -66
  459. package/contracts/registry/RegistryServiceManager.sol +5 -5
  460. package/contracts/registry/ReleaseAdmin.sol +253 -0
  461. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  462. package/contracts/registry/ReleaseRegistry.sol +517 -0
  463. package/contracts/registry/ServiceAuthorizationV3.sol +192 -60
  464. package/contracts/registry/TokenRegistry.sol +12 -11
  465. package/contracts/shared/Component.sol +65 -136
  466. package/contracts/shared/ComponentService.sol +425 -381
  467. package/contracts/shared/ComponentServiceManager.sol +10 -7
  468. package/contracts/shared/ComponentVerifyingService.sol +29 -18
  469. package/contracts/shared/ContractLib.sol +347 -0
  470. package/contracts/shared/IComponent.sol +5 -17
  471. package/contracts/shared/IComponentService.sol +49 -41
  472. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  473. package/contracts/shared/IKeyValueStore.sol +1 -0
  474. package/contracts/shared/ILifecycle.sol +3 -2
  475. package/contracts/shared/INftOwnable.sol +2 -0
  476. package/contracts/shared/IPolicyHolder.sol +12 -22
  477. package/contracts/shared/IRegisterable.sol +23 -1
  478. package/contracts/shared/IService.sol +4 -6
  479. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  480. package/contracts/shared/InstanceLinkedComponent.sol +95 -45
  481. package/contracts/shared/KeyValueStore.sol +7 -3
  482. package/contracts/shared/Lifecycle.sol +30 -72
  483. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  484. package/contracts/shared/NftOwnable.sol +31 -11
  485. package/contracts/shared/PolicyHolder.sol +17 -57
  486. package/contracts/shared/Registerable.sol +52 -21
  487. package/contracts/shared/RegistryLinked.sol +9 -14
  488. package/contracts/shared/Service.sol +18 -36
  489. package/contracts/shared/TokenHandler.sol +310 -26
  490. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  491. package/contracts/staking/IStaking.sol +26 -15
  492. package/contracts/staking/IStakingService.sol +31 -9
  493. package/contracts/staking/Staking.sol +125 -88
  494. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +95 -45
  495. package/contracts/staking/StakingLifecycle.sol +23 -0
  496. package/contracts/staking/StakingManager.sol +10 -12
  497. package/contracts/staking/StakingReader.sol +26 -33
  498. package/contracts/staking/StakingService.sol +93 -37
  499. package/contracts/staking/StakingServiceManager.sol +8 -7
  500. package/contracts/staking/StakingStore.sol +17 -24
  501. package/contracts/staking/TargetManagerLib.sol +7 -3
  502. package/contracts/type/Amount.sol +27 -5
  503. package/contracts/type/Blocknumber.sol +7 -1
  504. package/contracts/type/ClaimId.sol +6 -1
  505. package/contracts/type/Fee.sol +8 -8
  506. package/contracts/type/Key32.sol +2 -2
  507. package/contracts/type/Key32Set.sol +62 -0
  508. package/contracts/type/NftId.sol +7 -0
  509. package/contracts/type/ObjectType.sol +80 -27
  510. package/contracts/type/PayoutId.sol +10 -10
  511. package/contracts/type/Referral.sol +1 -0
  512. package/contracts/type/RiskId.sol +38 -6
  513. package/contracts/type/RoleId.sol +75 -94
  514. package/contracts/type/Seconds.sol +21 -1
  515. package/contracts/type/Selector.sol +5 -0
  516. package/contracts/type/StateId.sol +15 -1
  517. package/contracts/type/Timestamp.sol +10 -5
  518. package/contracts/type/UFixed.sol +61 -125
  519. package/contracts/type/Version.sol +57 -6
  520. package/contracts/{shared → upgradeability}/ProxyManager.sol +82 -47
  521. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +8 -4
  522. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  523. package/package.json +9 -6
  524. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  525. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  526. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  527. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  528. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  529. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  530. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  531. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  532. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  533. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  534. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  535. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  536. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  537. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  538. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  539. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  540. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  541. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  542. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  543. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  544. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  545. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  546. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  547. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  548. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  549. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  550. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  551. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  552. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  553. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  554. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  555. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  556. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  557. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  558. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  559. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  560. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  561. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  562. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  563. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  564. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  565. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  566. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  567. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  568. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  569. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  570. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  571. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  572. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
  573. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  574. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  575. package/contracts/instance/BundleManager.sol +0 -126
  576. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  577. package/contracts/instance/base/ObjectManager.sol +0 -80
  578. package/contracts/instance/module/IAccess.sol +0 -46
  579. package/contracts/product/ProductService.sol +0 -124
  580. package/contracts/product/ProductServiceManager.sol +0 -42
  581. package/contracts/registry/ReleaseManager.sol +0 -527
  582. package/contracts/shared/AccessAdmin.sol +0 -759
  583. package/contracts/shared/AccessManagerCustom.sol +0 -741
  584. package/contracts/shared/AccessManagerExtended.sol +0 -481
  585. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  586. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  587. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  588. package/contracts/shared/IAccessAdmin.sol +0 -168
  589. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  590. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  591. package/contracts/shared/InitializableCustom.sol +0 -177
  592. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,331 +1,450 @@
1
- // SPDX-License-Identifier: Apache-2.0
1
+ // SPDX-License-Identifier: UNLICENSED
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
- import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
4
+ import {IAccess} from "../authorization/IAccess.sol";
5
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IInstance} from "./IInstance.sol";
6
9
 
7
- import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, INSTANCE_OWNER_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
8
- import {TimestampLib} from "../type/Timestamp.sol";
10
+ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
11
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
9
12
  import {NftId} from "../type/NftId.sol";
13
+ import {ObjectType, INSTANCE, ORACLE} from "../type/ObjectType.sol";
14
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
15
+ import {Str, StrLib} from "../type/String.sol";
16
+ import {TokenHandler} from "../shared/TokenHandler.sol";
17
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
10
18
 
11
- import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
12
-
13
- import {IRegistry} from "../registry/IRegistry.sol";
14
-
15
- import {IInstance} from "./IInstance.sol";
16
- import {IAccess} from "./module/IAccess.sol";
17
19
 
18
20
  contract InstanceAdmin is
19
- AccessManagedUpgradeable
21
+ AccessAdmin
20
22
  {
21
- using RoleIdLib for RoleId;
22
-
23
- string public constant INSTANCE_ROLE_NAME = "InstanceRole";
24
- string public constant INSTANCE_OWNER_ROLE_NAME = "InstanceOwnerRole";
25
-
23
+ string public constant INSTANCE_TARGET_NAME = "Instance";
26
24
  string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
25
+ string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
26
+ string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
27
+ string public constant RISK_SET_TARGET_NAME = "RiskSet";
27
28
 
28
29
  uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
29
- uint32 public constant EXECUTION_DELAY = 0;
30
30
 
31
- mapping(address target => IAccess.Type) _targetType;
32
- mapping(RoleId roleId => IAccess.Type) _roleType;
33
- uint64 _idNext;
31
+ error ErrorInstanceAdminNotInstanceService(address caller);
32
+
33
+ error ErrorInstanceAdminNotRegistered(address instance);
34
+ error ErrorInstanceAdminNotInstance(address instance);
35
+ error ErrorInstanceAdminAlreadyAuthorized(address instance);
34
36
 
35
- AccessManagerExtendedInitializeable internal _accessManager;
36
- address _instance;
37
+ error ErrorInstanceAdminNotComponentRole(RoleId roleId);
38
+ error ErrorInstanceAdminRoleAlreadyExists(RoleId roleId);
39
+ error ErrorInstanceAdminRoleTypeNotContract(RoleId roleId, IAccess.RoleType roleType);
40
+
41
+ error ErrorInstanceAdminReleaseMismatch();
42
+ error ErrorInstanceAdminExpectedTargetMissing(string targetName);
43
+
44
+ IInstance internal _instance;
37
45
  IRegistry internal _registry;
46
+ VersionPart internal _release;
47
+ uint64 internal _customIdNext;
38
48
 
39
- // instance owner role is granted upon instance nft minting in callback function
40
- // assume this contract is already a member of ADMIN_ROLE, the only member
41
- function initialize(address instanceAddress) external initializer
42
- {
43
- IInstance instance = IInstance(instanceAddress);
44
- IRegistry registry = instance.getRegistry();
45
- address authority = instance.authority();
46
-
47
- __AccessManaged_init(authority);
48
-
49
- _accessManager = AccessManagerExtendedInitializeable(authority);
50
- _instance = instanceAddress;
51
- _registry = registry;
52
- _idNext = CUSTOM_ROLE_ID_MIN;
53
-
54
- // minimum configuration required for nft interception
55
- _createRole(INSTANCE_ROLE(), INSTANCE_ROLE_NAME, IAccess.Type.Core);
56
- _createRole(INSTANCE_OWNER_ROLE(), INSTANCE_OWNER_ROLE_NAME, IAccess.Type.Core);
57
- _grantRole(INSTANCE_ROLE(), address(instance));
58
-
59
- _createTarget(address(this), INSTANCE_ADMIN_TARGET_NAME, IAccess.Type.Core);
60
- bytes4[] memory instanceAdminInstanceSelectors = new bytes4[](1);
61
- instanceAdminInstanceSelectors[0] = this.transferInstanceOwnerRole.selector;
62
- _setTargetFunctionRole(address(this), instanceAdminInstanceSelectors, INSTANCE_ROLE());
63
- }
49
+ mapping(address target => RoleId roleId) internal _targetRoleId;
50
+ uint64 internal _components;
64
51
 
65
- //--- Role ------------------------------------------------------//
66
- // ADMIN_ROLE
67
- // assume all core roles are known at deployment time
68
- // assume core roles are set and granted only during instance cloning
69
- // assume core roles are never revoked -> core roles admin is never active after intialization
70
- function createCoreRole(RoleId roleId, string memory name) external restricted() {
71
- _createRole(roleId, name, IAccess.Type.Core);
52
+ modifier onlyInstanceService() {
53
+ if (msg.sender != _registry.getServiceAddress(INSTANCE(), getRelease())) {
54
+ revert ErrorInstanceAdminNotInstanceService(msg.sender);
55
+ }
56
+ _;
72
57
  }
73
58
 
74
- // ADMIN_ROLE
75
- // assume gif roles can be revoked
76
- // assume admin is INSTANCE_OWNER_ROLE or INSTANCE_ROLE
77
- function createGifRole(RoleId roleId, string memory name, RoleId admin) external restricted() {
78
- _createRole(roleId, name, IAccess.Type.Gif);
79
- _setRoleAdmin(roleId, admin);
59
+ /// @dev Only used for master instance admin.
60
+ constructor(address accessManager) {
61
+ initialize(
62
+ accessManager,
63
+ "MasterInstanceAdmin");
80
64
  }
81
65
 
82
- // INSTANCE_ROLE
83
- // TODO specify how many owners role can have -> many roles MUST have exactly 1 member?
84
- function createRole(string memory roleName, string memory adminName)
66
+
67
+ /// @dev Completes the initialization of this instance admin using the provided instance, registry and version.
68
+ /// Important: Initialization of instance admin is only complete after calling this function.
69
+ /// Important: The instance MUST be registered and all instance supporting contracts must be wired to this instance.
70
+ function completeSetup(
71
+ address registry,
72
+ address instance,
73
+ address authorization,
74
+ VersionPart release
75
+ )
85
76
  external
86
- restricted()
87
- returns(RoleId roleId, RoleId admin)
77
+ reinitializer(uint64(release.toInt()))
78
+ onlyDeployer()
88
79
  {
89
- (roleId, admin) = _getNextCustomRoleId();
80
+ // checks
81
+ _checkRegistry(registry);
82
+ _checkIsRegistered(registry, instance, INSTANCE());
83
+
84
+ AccessManagerCloneable(
85
+ authority()).completeSetup(
86
+ registry,
87
+ release);
88
+
89
+ _checkAuthorization(authorization, INSTANCE(), release, true);
90
90
 
91
- _createRole(roleId, roleName, IAccess.Type.Custom);
92
- _createRole(admin, adminName, IAccess.Type.Custom);
91
+ // effects
92
+ _registry = IRegistry(registry);
93
+ _release = release;
93
94
 
94
- _setRoleAdmin(roleId, admin);
95
- _setRoleAdmin(admin, INSTANCE_OWNER_ROLE());
95
+ _instance = IInstance(instance);
96
+ _authorization = IAuthorization(authorization);
97
+ _components = 0;
98
+ _customIdNext = CUSTOM_ROLE_ID_MIN;
99
+
100
+ // link nft ownability to instance
101
+ _linkToNftOwnable(instance);
102
+
103
+ // create instance role and target
104
+ _setupInstance(instance);
105
+
106
+ // add instance authorization
107
+ _createRoles(_authorization);
108
+ // _createTargets(_authorization);
109
+ _setupInstanceHelperTargetsWithRoles();
110
+ _createTargetAuthorizations(_authorization);
96
111
  }
97
112
 
98
- // ADMIN_ROLE
99
- // assume used by instance service only during instance cloning
100
- // assume used only by this.createRole(), this.createGifRole() afterwards
101
- function setRoleAdmin(RoleId roleId, RoleId admin) public restricted() {
102
- _setRoleAdmin(roleId, admin);
113
+
114
+ function _createTargets(IAuthorization authorization)
115
+ internal
116
+ {
117
+ _createTargetWithRole(address(this), INSTANCE_ADMIN_TARGET_NAME, authorization.getTargetRole(StrLib.toStr(INSTANCE_ADMIN_TARGET_NAME)));
118
+ _createTargetWithRole(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME, authorization.getTargetRole(StrLib.toStr(INSTANCE_STORE_TARGET_NAME)));
119
+ _createTargetWithRole(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME, authorization.getTargetRole(StrLib.toStr(BUNDLE_SET_TARGET_NAME)));
120
+ _createTargetWithRole(address(_instance.getRiskSet()), RISK_SET_TARGET_NAME, authorization.getTargetRole(StrLib.toStr(RISK_SET_TARGET_NAME)));
103
121
  }
104
122
 
105
- // INSTANCE_ROLE
106
- function transferInstanceOwnerRole(address from, address to) external restricted() {
107
- // temp pre transfer checks
108
- assert(_getRoleMembers(INSTANCE_ROLE()) == 1);
109
- assert(_hasRole(INSTANCE_ROLE(), _instance));
110
- assert(_getRoleAdmin(INSTANCE_OWNER_ROLE()).toInt() == ADMIN_ROLE().toInt());
111
- if(from != address(0)) { // nft transfer
112
- assert(_getRoleMembers(INSTANCE_OWNER_ROLE()) == 1);
113
- } else { // nft minting
114
- assert(_getRoleMembers(INSTANCE_OWNER_ROLE()) == 0);
115
- }
116
123
 
117
- // transfer
118
- assert(from != to);
119
- _grantRole(INSTANCE_OWNER_ROLE(), to);
120
- if(from != address(0)) { // nft transfer
121
- _revokeRole(INSTANCE_OWNER_ROLE(), from);
122
- }
124
+ /// @dev Initializes the authorization for the specified component.
125
+ /// Important: The component MUST be registered.
126
+ function initializeComponentAuthorization(
127
+ address componentAddress,
128
+ ObjectType expectedType
129
+ )
130
+ external
131
+ restricted()
132
+ {
133
+ // checks
134
+ _checkIsRegistered(address(getRegistry()), componentAddress, expectedType);
123
135
 
124
- // temp post transfer checks
125
- assert(_getRoleMembers(INSTANCE_OWNER_ROLE()) == 1);// temp
126
- assert(_hasRole(INSTANCE_OWNER_ROLE(), to));
127
- }
136
+ IInstanceLinkedComponent component = IInstanceLinkedComponent(componentAddress);
137
+ IAuthorization authorization = component.getAuthorization();
138
+ _checkAuthorization(address(authorization), expectedType, getRelease(), false);
128
139
 
129
- //--- Target ------------------------------------------------------//
130
- // ADMIN_ROLE
131
- // assume some core targets are registred (instance) while others are not (instance accesss manager, instance reader, bundle manager)
132
- function createCoreTarget(address target, string memory name) external restricted() {
133
- _createTarget(target, name, IAccess.Type.Core);
140
+ // effects
141
+ // setup target and role for component (including token handler if applicable)
142
+ _setupComponentAndTokenHandler(component, expectedType);
143
+
144
+ // create other roles and function authorizations
145
+ _createRoles(authorization);
146
+ _createTargetAuthorizations(authorization);
134
147
  }
135
148
 
136
- // INSTANCE_SERVICE_ROLE
137
- function createGifTarget(address target, string memory name) external restricted()
149
+ function getRelease()
150
+ public
151
+ view
152
+ override
153
+ returns (VersionPart release)
138
154
  {
139
- if(!_registry.isRegistered(target)) {
140
- revert IAccess.ErrorIAccessTargetNotRegistered(target);
141
- }
155
+ return _release;
156
+ }
142
157
 
143
- NftId targetParentNftId = _registry.getObjectInfo(target).parentNftId;
144
- NftId instanceNftId = _registry.getObjectInfo(_instance).nftId;
145
- if(targetParentNftId != instanceNftId) {
146
- revert IAccess.ErrorIAccessTargetInstanceMismatch(target, targetParentNftId, instanceNftId);
147
- }
148
158
 
149
- _createTarget(target, name, IAccess.Type.Gif);
159
+ // create instance role and target
160
+ function _setupInstance(address instance) internal {
161
+
162
+ // create instance role
163
+ RoleId instanceRoleId = _authorization.getTargetRole(
164
+ _authorization.getMainTarget());
165
+
166
+ _createRole(
167
+ instanceRoleId,
168
+ _authorization.getRoleInfo(instanceRoleId));
169
+
170
+ // create instance target
171
+ _createTarget(
172
+ instance,
173
+ _authorization.getMainTargetName(),
174
+ true, // checkAuthority
175
+ false); // custom
176
+
177
+ // assign instance role to instance
178
+ _grantRoleToAccount(
179
+ instanceRoleId,
180
+ instance);
150
181
  }
151
182
 
152
- // INSTANCE_ROLE
153
- // assume custom target.authority() is constant -> target MUST not be used with different instance access manager
154
- // assume custom target can not be registered as component -> each service which is doing component registration MUST register a gif target
155
- // assume custom target can not be registered as instance or service -> why?
156
- // TODO check target associated with instance owner or instance or instance components or components helpers
157
- function createTarget(address target, string memory name) external restricted() {
158
- _createTarget(target, name, IAccess.Type.Custom);
183
+ /// @dev Creates a custom role
184
+ // TODO implement
185
+ // function createRole()
186
+ // external
187
+ // restricted()
188
+ // {
189
+
190
+ // }
191
+
192
+ /// @dev Grants the provided role to the specified account
193
+ function grantRole(
194
+ RoleId roleId,
195
+ address account)
196
+ external
197
+ restricted()
198
+ {
199
+ _grantRoleToAccount(roleId, account);
159
200
  }
160
201
 
161
- // TODO instance owner locks component instead of revoking it access to the instance...
162
- // INSTANCE_SERVICE_ROLE
163
- function setTargetLockedByService(address target, bool locked) external restricted {
164
- _setTargetLocked(target, locked);
202
+
203
+ function setInstanceLocked(bool locked)
204
+ external
205
+ // not restricted(): need to operate on locked instances to unlock instance
206
+ onlyInstanceService()
207
+ {
208
+ AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
209
+ accessManager.setLocked(locked);
165
210
  }
166
211
 
167
- // INSTANCE_ROLE
168
- function setTargetLockedByInstance(address target, bool locked) external restricted {
212
+
213
+ function setTargetLocked(address target, bool locked)
214
+ external
215
+ // not restricted(): might need to operate on targets while instance is locked
216
+ onlyInstanceService()
217
+ {
169
218
  _setTargetLocked(target, locked);
170
219
  }
171
220
 
172
221
 
173
- // allowed combinations of roles and targets:
174
- //1) set core role for core target
175
- //2) set gif role for gif target
176
- //3) set custom role for gif target
177
- //4) set custom role for custom target
178
-
179
- // ADMIN_ROLE if used only during initialization, works with:
180
- // any roles for any targets
181
- // INSTANCE_SERVICE_ROLE if used not only during initilization, works with:
182
- // core roles for core targets
183
- // gif roles for gif targets
184
- function setTargetFunctionRoleByService(
185
- string memory targetName,
186
- bytes4[] calldata selectors,
187
- RoleId roleId
188
- )
189
- public
190
- virtual
191
- restricted
222
+ function setComponentLocked(address target, bool locked)
223
+ external
224
+ restricted()
192
225
  {
193
- address target = _accessManager.getTargetAddress(targetName);
194
- // not custom target
195
- if(_targetType[target] == IAccess.Type.Custom) {
196
- revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Custom);
197
- }
198
-
199
- // not custom role
200
- if(_roleType[roleId] == IAccess.Type.Custom) {
201
- revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Custom);
202
- }
226
+ _setTargetLocked(target, locked);
227
+ }
203
228
 
204
- _setTargetFunctionRole(target, selectors, roleId);
229
+ /// @dev Returns the number of components that have been registered with this instance.
230
+ function components()
231
+ external
232
+ view
233
+ returns (uint64)
234
+ {
235
+ return _components;
205
236
  }
206
237
 
207
- // INSTANCE_ROLE
208
- // gif role for gif target
209
- // gif role for custom target
210
- // custom role for gif target -> need to prohibit
211
- // custom role for custom target
212
- // TODO instance owner can mess with gif target (component) -> e.g. set custom role for function intendent to work with gif role
213
- function setTargetFunctionRoleByInstance(
214
- string memory targetName,
215
- bytes4[] calldata selectors,
216
- RoleId roleId// string memory roleName
217
- )
218
- public
219
- virtual
220
- restricted()
238
+ /// @dev Returns the instance authorization specification used to set up this instance admin.
239
+ function getInstanceAuthorization()
240
+ external
241
+ view
242
+ returns (IAuthorization instanceAuthorizaion)
221
243
  {
222
- address target = _accessManager.getTargetAddress(targetName);
244
+ return _authorization;
245
+ }
223
246
 
224
- // not core target
225
- if(_targetType[target] == IAccess.Type.Core) {
226
- revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Core);
227
- }
247
+ // ------------------- Internal functions ------------------- //
248
+
249
+ function _setupComponentAndTokenHandler(
250
+ IInstanceLinkedComponent component,
251
+ ObjectType componentType
252
+ )
253
+ internal
254
+ {
228
255
 
229
- // not core role
230
- if(_roleType[roleId] == IAccess.Type.Core) {
231
- revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
256
+ IAuthorization authorization = component.getAuthorization();
257
+ string memory targetName = authorization.getMainTargetName();
258
+
259
+ // create component role and target
260
+ RoleId componentRoleId = _createComponentRoleId(component, authorization);
261
+
262
+ // create component's target
263
+ _createTarget(
264
+ address(component),
265
+ targetName,
266
+ true, // checkAuthority
267
+ false); // custom
268
+
269
+ // create component's token handler target if app
270
+ if (componentType != ORACLE()) {
271
+ NftId componentNftId = _registry.getNftIdForAddress(address(component));
272
+ address tokenHandler = address(
273
+ _instance.getInstanceReader().getComponentInfo(
274
+ componentNftId).tokenHandler);
275
+
276
+ _createTarget(
277
+ tokenHandler,
278
+ authorization.getTokenHandlerName(),
279
+ true,
280
+ false);
281
+
282
+ // token handler does not require its own role
283
+ // token handler is not calling other components
232
284
  }
233
285
 
234
- _setTargetFunctionRole(target, selectors, roleId);
286
+ // assign component role to component
287
+ _grantRoleToAccount(
288
+ componentRoleId,
289
+ address(component));
235
290
  }
236
291
 
237
- //--- Role internal view/pure functions --------------------------------------//
238
- function _createRole(RoleId roleId, string memory name, IAccess.Type rtype) internal {
239
- _validateRole(roleId, rtype);
240
-
241
- _roleType[roleId] = rtype;
242
- _accessManager.createRole(roleId.toInt(), name);
243
- }
244
292
 
245
- function _validateRole(RoleId roleId, IAccess.Type rtype) internal pure
293
+ function _createComponentRoleId(
294
+ IInstanceLinkedComponent component,
295
+ IAuthorization authorization
296
+ )
297
+ internal
298
+ returns (RoleId componentRoleId)
246
299
  {
247
- uint roleIdInt = roleId.toInt();
248
- if(rtype == IAccess.Type.Custom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
249
- revert IAccess.ErrorIAccessRoleIdTooSmall(roleId);
300
+ // checks
301
+ // check component is not yet authorized
302
+ if (_targetRoleId[address(component)].gtz()) {
303
+ revert ErrorInstanceAdminAlreadyAuthorized(address(component));
250
304
  }
251
305
 
252
- if(
253
- rtype != IAccess.Type.Custom &&
254
- roleIdInt >= CUSTOM_ROLE_ID_MIN &&
255
- roleIdInt != PUBLIC_ROLE().toInt())
256
- {
257
- revert IAccess.ErrorIAccessRoleIdTooBig(roleId);
306
+ // check generic component role
307
+ RoleId genericComponentRoleId = authorization.getTargetRole(
308
+ authorization.getMainTarget());
309
+
310
+ if (!genericComponentRoleId.isComponentRole()) {
311
+ revert ErrorInstanceAdminNotComponentRole(genericComponentRoleId);
258
312
  }
259
- }
260
313
 
261
- function _grantRole(RoleId roleId, address account) internal {
262
- _accessManager.grantRole(roleId.toInt(), account, EXECUTION_DELAY);
263
- }
314
+ // check component role does not exist
315
+ componentRoleId = toComponentRole(
316
+ genericComponentRoleId,
317
+ _components);
264
318
 
265
- function _revokeRole(RoleId roleId, address member) internal {
266
- _accessManager.revokeRole(roleId.toInt(), member);
267
- }
319
+ if (roleExists(componentRoleId)) {
320
+ revert ErrorInstanceAdminRoleAlreadyExists(componentRoleId);
321
+ }
322
+
323
+ // check role info
324
+ IAccess.RoleInfo memory roleInfo = authorization.getRoleInfo(
325
+ genericComponentRoleId);
268
326
 
269
- function _setRoleAdmin(RoleId roleId, RoleId admin) internal {
270
- if(_roleType[roleId] == IAccess.Type.Core) {
271
- revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
327
+ if (roleInfo.roleType != IAccess.RoleType.Contract) {
328
+ revert ErrorInstanceAdminRoleTypeNotContract(
329
+ componentRoleId,
330
+ roleInfo.roleType);
272
331
  }
273
332
 
274
- _accessManager.setRoleAdmin(roleId.toInt(), admin.toInt());
275
- }
333
+ // effects
334
+ _targetRoleId[address(component)] = componentRoleId;
335
+ _components++;
276
336
 
277
- function _getRoleAdmin(RoleId roleId) internal view returns (RoleId admin) {
278
- return RoleIdLib.toRoleId(_accessManager.getRoleAdmin(roleId.toInt()));
337
+ _createRole(
338
+ componentRoleId,
339
+ roleInfo);
279
340
  }
280
341
 
281
- function _hasRole(RoleId roleId, address account) internal view returns (bool accountHasRole) {
282
- uint32 executionDelay;
283
- (accountHasRole, executionDelay) = _accessManager.hasRole(roleId.toInt(), account);
284
- assert(executionDelay == 0);
285
- }
286
342
 
287
- function _getRoleMembers(RoleId roleId) internal view returns (uint) {
288
- return _accessManager.getRoleMembers(roleId.toInt());
289
- }
343
+ function _createRoles(IAuthorization authorization)
344
+ internal
345
+ {
346
+ RoleId[] memory roles = authorization.getRoles();
347
+ RoleId mainTargetRoleId = authorization.getTargetRole(
348
+ authorization.getMainTarget());
290
349
 
291
- function _getNextCustomRoleId() internal returns(RoleId roleId, RoleId admin) {
292
- uint64 roleIdInt = _idNext;
293
- uint64 adminInt = roleIdInt + 1;
350
+ RoleId roleId;
351
+ RoleInfo memory roleInfo;
294
352
 
295
- _idNext = roleIdInt + 2;
353
+ for(uint256 i = 0; i < roles.length; i++) {
296
354
 
297
- roleId = RoleIdLib.toRoleId(roleIdInt);
298
- admin = RoleIdLib.toRoleId(adminInt);
355
+ roleId = roles[i];
356
+
357
+ // skip main target role, create role if not exists
358
+ if (roleId != mainTargetRoleId && !roleExists(roleId)) {
359
+ _createRole(
360
+ roleId,
361
+ authorization.getRoleInfo(roleId));
362
+ }
363
+ }
299
364
  }
300
365
 
301
- //--- Target internal view/pure functions --------------------------------------//
302
- function _createTarget(address target, string memory name, IAccess.Type ttype)
303
- internal
366
+
367
+ function toComponentRole(RoleId roleId, uint64 componentIdx)
368
+ internal
369
+ pure
370
+ returns (RoleId)
304
371
  {
305
- _validateTarget(target, ttype);
306
- _targetType[target] = ttype;
307
- _accessManager.createTarget(target, name);
372
+ return RoleIdLib.toRoleId(
373
+ RoleIdLib.toInt(roleId) + componentIdx);
308
374
  }
309
375
 
310
- function _validateTarget(address target, IAccess.Type ttype)
311
- internal
312
- view
313
- {}
314
376
 
315
- // IMPORTANT: instance admin MUST be of Core type -> otherwise can be locked forever
316
- // TODO: consider locking gif targets in a separate function?
317
- function _setTargetLocked(address target, bool locked) internal
377
+ function _createTargetAuthorizations(IAuthorization authorization)
378
+ internal
318
379
  {
319
- IAccess.Type targetType = _targetType[target];
380
+ Str[] memory targets = authorization.getTargets();
381
+ Str target;
382
+
383
+ for(uint256 i = 0; i < targets.length; i++) {
384
+ target = targets[i];
385
+ RoleId[] memory authorizedRoles = authorization.getAuthorizedRoles(target);
386
+ RoleId authorizedRole;
387
+
388
+ for(uint256 j = 0; j < authorizedRoles.length; j++) {
389
+ authorizedRole = authorizedRoles[j];
390
+
391
+ _authorizeTargetFunctions(
392
+ getTargetForName(target),
393
+ authorizedRole,
394
+ authorization.getAuthorizedFunctions(
395
+ target,
396
+ authorizedRole));
397
+ }
398
+ }
399
+ }
320
400
 
321
- if(targetType == IAccess.Type.Core) {
322
- revert IAccess.ErrorIAccessTargetTypeInvalid(target, targetType);
401
+ function _checkAndCreateTargetWithRole(
402
+ address target,
403
+ string memory targetName
404
+ )
405
+ internal
406
+ {
407
+ // check that target name is defined in authorization specification
408
+ Str name = StrLib.toStr(targetName);
409
+ if (!_authorization.targetExists(name)) {
410
+ revert ErrorInstanceAdminExpectedTargetMissing(targetName);
323
411
  }
324
412
 
325
- _accessManager.setTargetClosed(target, locked);
413
+ // create named target
414
+ _createTarget(
415
+ target,
416
+ targetName,
417
+ false, // check authority TODO check normal targets, don't check service targets (they share authority with release admin)
418
+ false);
419
+
420
+ // assign target role if defined
421
+ RoleId targetRoleId = _authorization.getTargetRole(name);
422
+ if (targetRoleId != RoleIdLib.zero()) {
423
+ _grantRoleToAccount(targetRoleId, target);
424
+ }
326
425
  }
327
426
 
328
- function _setTargetFunctionRole(address target, bytes4[] memory selectors, RoleId roleId) internal {
329
- _accessManager.setTargetFunctionRole(target, selectors, roleId.toInt());
427
+ function _setupInstanceHelperTargetsWithRoles()
428
+ internal
429
+ {
430
+
431
+ // create module targets
432
+ _checkAndCreateTargetWithRole(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME);
433
+ _checkAndCreateTargetWithRole(address(_instance.getInstanceAdmin()), INSTANCE_ADMIN_TARGET_NAME);
434
+ _checkAndCreateTargetWithRole(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME);
435
+ _checkAndCreateTargetWithRole(address(_instance.getRiskSet()), RISK_SET_TARGET_NAME);
436
+
437
+ // create targets for services that need to access the instance targets
438
+ ObjectType[] memory serviceDomains = _authorization.getServiceDomains();
439
+ VersionPart release = _authorization.getRelease();
440
+ ObjectType serviceDomain;
441
+
442
+ for (uint256 i = 0; i < serviceDomains.length; i++) {
443
+ serviceDomain = serviceDomains[i];
444
+
445
+ _checkAndCreateTargetWithRole(
446
+ _registry.getServiceAddress(serviceDomain, release),
447
+ _authorization.getServiceTarget(serviceDomain).toString());
448
+ }
330
449
  }
331
- }
450
+ }