@etherisc/gif-next 0.0.2-c68eaf3-087 → 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 (485) hide show
  1. package/README.md +81 -7
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +454 -253
  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 +1 -1
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +227 -26
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +353 -189
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +105 -18
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +113 -290
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +212 -38
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +45 -163
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +323 -182
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +108 -70
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +32 -132
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +181 -71
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +121 -198
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +212 -38
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +287 -341
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +212 -38
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +184 -251
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +76 -155
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +239 -203
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +672 -362
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +198 -23
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +120 -14
  70. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/Instance.sol/Instance.json +240 -40
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +705 -322
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +206 -51
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +704 -304
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +146 -87
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +59 -47
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +621 -571
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  88. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  97. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  102. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +66 -167
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +194 -40
  107. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +36 -71
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +50 -103
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +128 -81
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +91 -41
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +69 -137
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +212 -38
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +145 -333
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +73 -99
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +62 -142
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -118
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +182 -235
  132. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  133. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -149
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  135. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +472 -0
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  137. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +350 -369
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +121 -63
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  141. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +181 -57
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +76 -38
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  145. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +182 -215
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  147. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +212 -38
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  149. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +260 -179
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  151. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +96 -78
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +103 -10
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +48 -3
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  161. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +163 -178
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  163. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +58 -7
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  165. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +233 -194
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  167. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +727 -0
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +103 -73
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  171. package/artifacts/contracts/product/PricingService.sol/PricingService.json +120 -100
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +68 -58
  174. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  175. package/artifacts/contracts/product/Product.sol/Product.json +176 -209
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.json +143 -77
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
  180. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  182. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +60 -12
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  186. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  187. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  188. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  189. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/Registry.sol/Registry.json +98 -50
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +561 -429
  193. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  194. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +56 -34
  199. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  200. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +334 -64
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  208. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  209. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  210. package/artifacts/contracts/shared/Component.sol/Component.json +49 -88
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +239 -520
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -75
  215. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +573 -4
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +36 -57
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +139 -347
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +36 -71
  231. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  232. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  233. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  237. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  241. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  243. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +49 -102
  244. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  245. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  246. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  248. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  250. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  251. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  252. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  253. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  254. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  255. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  256. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  257. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  260. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  261. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  262. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  263. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  264. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +125 -99
  266. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  267. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +134 -10
  268. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  269. package/artifacts/contracts/staking/Staking.sol/Staking.json +225 -209
  270. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  272. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  274. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +83 -59
  276. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +40 -67
  278. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +203 -56
  280. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +73 -39
  282. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +163 -149
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  285. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +60 -50
  286. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  292. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  294. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  296. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  298. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  299. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  300. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  302. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  303. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  304. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  306. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  308. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  310. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  312. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  314. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  316. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  319. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  321. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  325. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
  327. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  329. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  331. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  332. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  333. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +32 -16
  334. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  336. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  337. package/contracts/accounting/AccountingService.sol +261 -0
  338. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  339. package/contracts/accounting/IAccountingService.sol +45 -0
  340. package/contracts/authorization/AccessAdmin.sol +300 -192
  341. package/contracts/authorization/AccessAdminLib.sol +183 -0
  342. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  343. package/contracts/authorization/Authorization.sol +307 -231
  344. package/contracts/authorization/IAccess.sol +13 -5
  345. package/contracts/authorization/IAccessAdmin.sol +69 -36
  346. package/contracts/authorization/IAuthorization.sol +21 -1
  347. package/contracts/distribution/BasicDistribution.sol +18 -16
  348. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  349. package/contracts/distribution/Distribution.sol +36 -77
  350. package/contracts/distribution/DistributionService.sol +111 -77
  351. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  352. package/contracts/distribution/IDistributionComponent.sol +0 -9
  353. package/contracts/distribution/IDistributionService.sol +22 -20
  354. package/contracts/examples/fire/FirePool.sol +21 -8
  355. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  356. package/contracts/examples/fire/FireProduct.sol +32 -14
  357. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  358. package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
  359. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  360. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  361. package/contracts/examples/unpermissioned/SimplePool.sol +32 -6
  362. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  363. package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -27
  364. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  365. package/contracts/instance/BundleSet.sol +42 -38
  366. package/contracts/instance/IInstance.sol +57 -17
  367. package/contracts/instance/IInstanceService.sol +27 -11
  368. package/contracts/instance/Instance.sol +102 -30
  369. package/contracts/instance/InstanceAdmin.sol +279 -106
  370. package/contracts/instance/InstanceAuthorizationV3.sol +87 -46
  371. package/contracts/instance/InstanceReader.sol +187 -32
  372. package/contracts/instance/InstanceService.sol +174 -126
  373. package/contracts/instance/InstanceServiceManager.sol +1 -1
  374. package/contracts/instance/InstanceStore.sol +13 -2
  375. package/contracts/instance/RiskSet.sol +118 -0
  376. package/contracts/instance/base/ObjectCounter.sol +1 -2
  377. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  378. package/contracts/instance/base/ObjectSet.sol +31 -33
  379. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  380. package/contracts/instance/module/IBundle.sol +6 -5
  381. package/contracts/instance/module/IComponents.sol +20 -9
  382. package/contracts/instance/module/IDistribution.sol +21 -8
  383. package/contracts/instance/module/IPolicy.sol +28 -7
  384. package/contracts/instance/module/IRisk.sol +5 -0
  385. package/contracts/oracle/BasicOracle.sol +1 -3
  386. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  387. package/contracts/oracle/IOracle.sol +9 -4
  388. package/contracts/oracle/Oracle.sol +1 -3
  389. package/contracts/oracle/OracleService.sol +96 -77
  390. package/contracts/oracle/OracleServiceManager.sol +1 -1
  391. package/contracts/pool/BasicPool.sol +23 -4
  392. package/contracts/pool/BasicPoolAuthorization.sol +27 -8
  393. package/contracts/pool/BundleService.sol +47 -145
  394. package/contracts/pool/BundleServiceManager.sol +1 -1
  395. package/contracts/pool/IBundleService.sol +15 -43
  396. package/contracts/pool/IPoolComponent.sol +1 -7
  397. package/contracts/pool/IPoolService.sol +58 -60
  398. package/contracts/pool/Pool.sol +106 -98
  399. package/contracts/pool/PoolLib.sol +309 -0
  400. package/contracts/pool/PoolService.sol +271 -228
  401. package/contracts/pool/PoolServiceManager.sol +1 -1
  402. package/contracts/product/ApplicationService.sol +34 -15
  403. package/contracts/product/ApplicationServiceManager.sol +1 -1
  404. package/contracts/product/BasicProduct.sol +8 -12
  405. package/contracts/product/BasicProductAuthorization.sol +24 -10
  406. package/contracts/product/ClaimService.sol +165 -137
  407. package/contracts/product/ClaimServiceManager.sol +1 -1
  408. package/contracts/product/IApplicationService.sol +8 -2
  409. package/contracts/product/IClaimService.sol +14 -2
  410. package/contracts/product/IPolicyService.sol +26 -11
  411. package/contracts/product/IPricingService.sol +1 -0
  412. package/contracts/product/IProductComponent.sol +4 -1
  413. package/contracts/product/IRiskService.sol +7 -7
  414. package/contracts/product/PolicyService.sol +242 -293
  415. package/contracts/product/PolicyServiceLib.sol +119 -0
  416. package/contracts/product/PolicyServiceManager.sol +1 -1
  417. package/contracts/product/PricingService.sol +30 -21
  418. package/contracts/product/PricingServiceManager.sol +3 -3
  419. package/contracts/product/Product.sol +65 -53
  420. package/contracts/product/RiskService.sol +89 -31
  421. package/contracts/product/RiskServiceManager.sol +1 -1
  422. package/contracts/registry/ChainNft.sol +4 -2
  423. package/contracts/registry/IRegistry.sol +14 -15
  424. package/contracts/registry/IRelease.sol +29 -0
  425. package/contracts/registry/Registry.sol +16 -3
  426. package/contracts/registry/RegistryAdmin.sol +145 -335
  427. package/contracts/registry/RegistryAuthorization.sol +267 -0
  428. package/contracts/registry/RegistryService.sol +3 -3
  429. package/contracts/registry/RegistryServiceManager.sol +1 -1
  430. package/contracts/registry/ReleaseAdmin.sol +253 -0
  431. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  432. package/contracts/registry/ReleaseRegistry.sol +150 -134
  433. package/contracts/registry/ServiceAuthorizationV3.sol +178 -40
  434. package/contracts/registry/TokenRegistry.sol +10 -9
  435. package/contracts/shared/Component.sol +52 -107
  436. package/contracts/shared/ComponentService.sol +336 -420
  437. package/contracts/shared/ComponentServiceManager.sol +1 -1
  438. package/contracts/shared/ComponentVerifyingService.sol +16 -14
  439. package/contracts/shared/ContractLib.sol +312 -3
  440. package/contracts/shared/IComponent.sol +1 -17
  441. package/contracts/shared/IComponentService.sol +27 -37
  442. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  443. package/contracts/shared/IRegisterable.sol +15 -4
  444. package/contracts/shared/IService.sol +3 -5
  445. package/contracts/shared/InitializableERC165.sol +9 -1
  446. package/contracts/shared/InstanceLinkedComponent.sol +4 -23
  447. package/contracts/shared/NftOwnable.sol +6 -6
  448. package/contracts/shared/PolicyHolder.sol +1 -1
  449. package/contracts/shared/Registerable.sol +41 -20
  450. package/contracts/shared/RegistryLinked.sol +7 -13
  451. package/contracts/shared/Service.sol +8 -27
  452. package/contracts/shared/TokenHandler.sol +275 -72
  453. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  454. package/contracts/staking/IStaking.sol +23 -12
  455. package/contracts/staking/IStakingService.sol +19 -1
  456. package/contracts/staking/Staking.sol +95 -46
  457. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
  458. package/contracts/staking/StakingReader.sol +6 -16
  459. package/contracts/staking/StakingService.sol +74 -14
  460. package/contracts/staking/StakingServiceManager.sol +5 -4
  461. package/contracts/staking/StakingStore.sol +2 -1
  462. package/contracts/type/Fee.sol +8 -8
  463. package/contracts/type/Key32.sol +2 -2
  464. package/contracts/type/Key32Set.sol +62 -0
  465. package/contracts/type/NftId.sol +6 -0
  466. package/contracts/type/ObjectType.sol +53 -35
  467. package/contracts/type/RiskId.sol +26 -8
  468. package/contracts/type/RoleId.sol +24 -4
  469. package/contracts/type/Selector.sol +5 -0
  470. package/contracts/type/Timestamp.sol +0 -5
  471. package/contracts/type/UFixed.sol +34 -127
  472. package/contracts/type/Version.sol +54 -5
  473. package/contracts/upgradeability/ProxyManager.sol +12 -10
  474. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
  475. package/package.json +4 -4
  476. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  477. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  478. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  479. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  480. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  481. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  482. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  483. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  484. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  485. package/contracts/instance/module/IAccess.sol +0 -46
@@ -1,20 +1,18 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IInstance} from "./IInstance.sol";
5
- import {INSTANCE} from "../type/ObjectType.sol";
6
- import {InstanceReader} from "./InstanceReader.sol";
7
- import {IPolicy} from "../instance/module/IPolicy.sol";
8
- import {IRegistry} from "../registry/IRegistry.sol";
9
4
  import {LibNftIdSet} from "../type/NftIdSet.sol";
10
- import {NftId} from "../type/NftId.sol";
11
- import {TimestampLib} from "../type/Timestamp.sol";
5
+ import {NftId, NftIdLib} from "../type/NftId.sol";
6
+ import {Key32} from "../type/Key32.sol";
7
+ import {BUNDLE} from "../type/ObjectType.sol";
12
8
 
13
9
  import {ObjectSet} from "./base/ObjectSet.sol";
10
+ import {ObjectSetHelperLib} from "./base/ObjectSetHelperLib.sol";
14
11
 
15
12
  contract BundleSet is
16
13
  ObjectSet
17
14
  {
15
+ using LibNftIdSet for LibNftIdSet.Set;
18
16
 
19
17
  event LogBundleSetPolicyLinked(NftId bundleNftId, NftId policyNftId);
20
18
  event LogBundleSetPolicyUnlinked(NftId bundleNftId, NftId policyNftId);
@@ -34,93 +32,99 @@ contract BundleSet is
34
32
  mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
35
33
 
36
34
  /// @dev links a policy to its bundle
37
- // to link a policy it MUST NOT yet have been linked
38
- function linkPolicy(NftId policyNftId) external restricted() {
39
- NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
40
- // decision will likely depend on the decision what to check here and what in the service
41
- NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
35
+ function linkPolicy(NftId poolNftId, NftId bundleNftId, NftId policyNftId) external restricted() {
42
36
 
43
37
  // ensure bundle is unlocked (in active set) and registered with this instance
44
- if (!_isActive(poolNftId, bundleNftId)) {
38
+ if (!_isActive(poolNftId, _toBundleKey32(bundleNftId))) {
45
39
  revert ErrorBundleSetBundleLocked(bundleNftId, policyNftId);
46
40
  }
47
41
 
48
- LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
42
+ _activePolicies[bundleNftId].add(policyNftId);
49
43
  emit LogBundleSetPolicyLinked(bundleNftId, policyNftId);
50
44
  }
51
45
 
52
46
 
53
47
  /// @dev unlinks a policy from its bundle
54
- // to unlink a policy it must closable, ie. meet one of the following criterias
55
- // - the policy MUST be past its expiry period and it MUST NOT have any open claims
56
- // - the policy's payoutAmount MUST be equal to its sumInsuredAmount and MUST NOT have any open claims
57
- function unlinkPolicy(NftId policyNftId) external restricted() {
58
- IPolicy.PolicyInfo memory policyInfo = _instance.getInstanceReader().getPolicyInfo(policyNftId);
59
-
60
- NftId bundleNftId = policyInfo.bundleNftId;
61
- // decision will likely depend on the decision what to check here and what in the service
62
- NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
48
+ function unlinkPolicy(NftId poolNftId, NftId bundleNftId, NftId policyNftId) external restricted() {
63
49
 
64
50
  // ensure bundle is registered with this instance
65
- if (!_contains(poolNftId, bundleNftId)) {
51
+ if (!_contains(poolNftId, _toBundleKey32(bundleNftId))) {
66
52
  revert ErrorBundleSetBundleUnknown(bundleNftId);
67
53
  }
68
54
 
69
- LibNftIdSet.remove(_activePolicies[bundleNftId], policyNftId);
70
- emit LogBundleSetPolicyUnlinked(policyInfo.bundleNftId, policyNftId);
55
+ _activePolicies[bundleNftId].remove(policyNftId);
56
+ emit LogBundleSetPolicyUnlinked(bundleNftId, policyNftId);
71
57
  }
72
58
 
73
59
 
74
60
  /// @dev add a new bundle to a pool registerd with this instance
75
61
  // the corresponding pool is fetched via instance reader
76
62
  function add(NftId bundleNftId) external restricted() {
77
- NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
63
+ NftId poolNftId = ObjectSetHelperLib.getPoolNftId(_instanceAddress, bundleNftId);
78
64
 
79
65
  // ensure pool is registered with instance
80
66
  if(poolNftId.eqz()) {
81
67
  revert ErrorBundleSetBundleNotRegistered(bundleNftId);
82
68
  }
83
69
 
84
- _add(poolNftId, bundleNftId);
70
+ _add(poolNftId, _toBundleKey32(bundleNftId));
85
71
  emit LogBundleSetBundleAdded(poolNftId, bundleNftId);
86
72
  }
87
73
 
88
74
 
89
75
  /// @dev unlocked (active) bundles are available to collateralize new policies
90
76
  function unlock(NftId bundleNftId) external restricted() {
91
- NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
92
- _activate(poolNftId, bundleNftId);
77
+ NftId poolNftId = ObjectSetHelperLib.getPoolNftId(_instanceAddress, bundleNftId);
78
+ _activate(poolNftId, _toBundleKey32(bundleNftId));
93
79
  emit LogBundleSetBundleUnlocked(poolNftId, bundleNftId);
94
80
  }
95
81
 
96
82
  /// @dev locked (deactivated) bundles may not collateralize any new policies
97
83
  function lock(NftId bundleNftId) external restricted() {
98
- NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
99
- _deactivate(poolNftId, bundleNftId);
84
+ NftId poolNftId = ObjectSetHelperLib.getPoolNftId(_instanceAddress, bundleNftId);
85
+ _deactivate(poolNftId, _toBundleKey32(bundleNftId));
100
86
  emit LogBundleSetBundleLocked(poolNftId, bundleNftId);
101
87
  }
102
88
 
89
+
90
+ function checkBundle(NftId productNftId, NftId bundleId)
91
+ public
92
+ view
93
+ returns (bool exists, bool active)
94
+ {
95
+ Key32 bundleKey32 = bundleId.toKey32(BUNDLE());
96
+ exists = _contains(productNftId, bundleKey32);
97
+
98
+ if (exists) {
99
+ active = _isActive(productNftId, bundleKey32);
100
+ }
101
+ }
102
+
103
103
  function bundles(NftId poolNftId) external view returns(uint256) {
104
104
  return _objects(poolNftId);
105
105
  }
106
106
 
107
- function getBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId bundleNftId) {
108
- return _getObject(poolNftId, idx);
107
+ function getBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId) {
108
+ return NftIdLib.toNftId(_getObject(poolNftId, idx).toKeyId());
109
109
  }
110
110
 
111
111
  function activeBundles(NftId poolNftId) external view returns(uint256) {
112
112
  return _activeObjs(poolNftId);
113
113
  }
114
114
 
115
- function getActiveBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId bundleNftId) {
116
- return _getActiveObject(poolNftId, idx);
115
+ function getActiveBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId) {
116
+ return NftIdLib.toNftId(_getActiveObject(poolNftId, idx).toKeyId());
117
117
  }
118
118
 
119
119
  function activePolicies(NftId bundleNftId) external view returns(uint256) {
120
- return LibNftIdSet.size(_activePolicies[bundleNftId]);
120
+ return _activePolicies[bundleNftId].size();
121
121
  }
122
122
 
123
123
  function getActivePolicy(NftId bundleNftId, uint256 idx) external view returns(NftId policyNftId) {
124
- return LibNftIdSet.getElementAt(_activePolicies[bundleNftId], idx);
124
+ return _activePolicies[bundleNftId].getElementAt(idx);
125
+ }
126
+
127
+ function _toBundleKey32(NftId nftId) private pure returns (Key32) {
128
+ return nftId.toKey32(BUNDLE());
125
129
  }
126
130
  }
@@ -1,35 +1,34 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
-
6
4
  import {Amount} from "../type/Amount.sol";
7
5
  import {BundleSet} from "./BundleSet.sol";
6
+ import {RiskSet} from "./RiskSet.sol";
8
7
  import {InstanceAdmin} from "./InstanceAdmin.sol";
9
8
  import {InstanceReader} from "./InstanceReader.sol";
10
9
  import {InstanceStore} from "./InstanceStore.sol";
11
10
  import {IRegisterable} from "../shared/IRegisterable.sol";
12
- import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
13
11
  import {NftId} from "../type/NftId.sol";
14
12
  import {RoleId} from "../type/RoleId.sol";
15
13
  import {Seconds} from "../type/Seconds.sol";
16
14
  import {UFixed} from "../type/UFixed.sol";
17
- import {VersionPart} from "../type/Version.sol";
18
15
 
19
16
 
20
17
  interface IInstance is
21
- IRegisterable,
22
- ITransferInterceptor,
23
- IAccessManaged
18
+ IRegisterable
24
19
  {
25
20
  error ErrorInstanceInstanceAdminZero();
26
- error ErrorInstanceInstanceAdminAlreadySet(address InstanceAdmin);
21
+ error ErrorInstanceInstanceAdminAlreadySet(address instanceAdmin);
27
22
  error ErrorInstanceInstanceAdminAuthorityMismatch(address instanceAuthority);
28
23
 
29
24
  error ErrorInstanceBundleSetAlreadySet(address instanceBundleSet);
30
25
  error ErrorInstanceBundleSetInstanceMismatch(address instance);
31
26
  error ErrorInstanceBundleSetAuthorityMismatch(address instanceAuthority);
32
27
 
28
+ error ErrorInstanceRiskSetAlreadySet(address instanceRiskSet);
29
+ error ErrorInstanceRiskSetInstanceMismatch(address instance);
30
+ error ErrorInstanceRiskSetAuthorityMismatch(address instanceAuthority);
31
+
33
32
  error ErrorInstanceInstanceReaderInstanceMismatch(address instanceAuthority);
34
33
 
35
34
  error ErrorInstanceInstanceStoreAlreadySet(address instanceStore);
@@ -39,8 +38,44 @@ interface IInstance is
39
38
  uint64 requestsCount;
40
39
  }
41
40
 
41
+ ///--- instance ---------------------------------------------------------//
42
+
43
+ /// @dev Locks/unlocks the complete instance, including all its components.
44
+ function setInstanceLocked(bool locked) external;
45
+
46
+ /// @dev Upgrades the instance reader to the specified target.
47
+ function upgradeInstanceReader() external;
48
+
49
+ /// @dev Sets the instance reader for the instance.
50
+ /// Permissioned: only the instance service may call this function.
51
+ function setInstanceReader(InstanceReader instanceReader) external;
52
+
53
+ ///--- staking ----------------------------------------------------------//
54
+
55
+ /// @dev Sets the duration for locking new stakes on this instance..
56
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
57
+
58
+ /// @dev Sets the staking reward rate [apr] for this instance.
59
+ function setStakingRewardRate(UFixed rewardRate) external;
60
+
61
+ /// @dev Sets the maximum staked amount for this instance.
62
+ function setStakingMaxAmount(Amount maxStakedAmount) external;
63
+
64
+ /// @dev Refills the staking reward reserves for the specified target.
65
+ function refillStakingRewardReserves(Amount dipAmount) external;
66
+
67
+ /// @dev Defunds the staking reward reserves for the specified target.
68
+ function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
69
+
70
+ ///--- product/component ------------------------------------------------//
71
+
72
+ /// @dev Locks/unlocks the specified target.
73
+ function setTargetLocked(address target, bool locked) external;
74
+
42
75
  /// @dev Register a product with the instance.
43
- function registerProduct(address product) external returns (NftId productNftId);
76
+ function registerProduct(address product, address token) external returns (NftId productNftId);
77
+
78
+ ///--- authz ------------------------------------------------------------//
44
79
 
45
80
  function createRole(string memory roleName, string memory adminName) external returns (RoleId roleId, RoleId admin);
46
81
  function grantRole(RoleId roleId, address account) external;
@@ -48,19 +83,24 @@ interface IInstance is
48
83
 
49
84
  function createTarget(address target, string memory name) external;
50
85
  function setTargetFunctionRole(string memory targetName, bytes4[] calldata selectors, RoleId roleId) external;
51
- function setTargetLocked(address target, bool locked) external;
52
86
 
53
- function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
54
- function setStakingRewardRate(UFixed rewardRate) external;
55
- function refillStakingRewardReserves(Amount dipAmount) external;
87
+ //--- getters -----------------------------------------------------------//
56
88
 
57
- /// @dev Defunds the staking reward reserves for the specified target.
58
- /// Permissioned: only the target owner may call this function.
59
- function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
89
+ /// @dev returns the overall locking state of the instance (including all components)
90
+ function isInstanceLocked() external view returns (bool isLocked);
91
+
92
+ /// @dev returns the locking state of the specified target
93
+ function isTargetLocked(address target) external view returns (bool isLocked);
94
+
95
+ // get products
96
+ function products() external view returns (uint256 productCount);
97
+ function getProductNftId(uint256 idx) external view returns (NftId productNftId);
60
98
 
61
- // get instance release and supporting contracts
99
+ // get supporting contracts
62
100
  function getInstanceReader() external view returns (InstanceReader);
63
101
  function getBundleSet() external view returns (BundleSet);
102
+ function getRiskSet() external view returns (RiskSet);
64
103
  function getInstanceAdmin() external view returns (InstanceAdmin);
65
104
  function getInstanceStore() external view returns (InstanceStore);
105
+ function isTokenRegistryDisabled() external view returns (bool);
66
106
  }
@@ -2,13 +2,10 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
- import {BundleSet} from "./BundleSet.sol";
6
- import {Instance} from "./Instance.sol";
7
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
5
+ import {IInstance} from "./IInstance.sol";
8
6
  import {IService} from "../shared/IService.sol";
9
7
  import {NftId} from "../type/NftId.sol";
10
8
  import {ObjectType} from "../type/ObjectType.sol";
11
- import {RoleId} from "../type/RoleId.sol";
12
9
  import {Seconds} from "../type/Seconds.sol";
13
10
  import {UFixed} from "../type/UFixed.sol";
14
11
  import {VersionPart} from "../type/Version.sol";
@@ -18,13 +15,14 @@ interface IInstanceService is IService {
18
15
  // onlyInstance
19
16
  error ErrorInstanceServiceNotRegistered(address instance);
20
17
  error ErrorInstanceServiceNotInstance(address instance, ObjectType objectType);
21
- error ErrorInstanceServiceInstanceVersionMismatch(address instance, VersionPart instanceVersion);
18
+ error ErrorInstanceServiceInstanceVersionMismatch(NftId instanceNftId, VersionPart expectedRelease, VersionPart instanceRelease);
22
19
 
23
20
  error ErrorInstanceServiceComponentNotInstanceLinked(address component);
24
21
 
25
22
  error ErrorInstanceServiceMasterInstanceAlreadySet();
26
23
  error ErrorInstanceServiceMasterInstanceAdminAlreadySet();
27
24
  error ErrorInstanceServiceMasterBundleSetAlreadySet();
25
+ error ErrorInstanceServiceMasterRiskSetAlreadySet();
28
26
  error ErrorInstanceServiceInstanceAddressZero();
29
27
 
30
28
  error ErrorInstanceServiceMasterInstanceReaderNotSet();
@@ -36,12 +34,15 @@ interface IInstanceService is IService {
36
34
  error ErrorInstanceServiceInstanceAdminZero();
37
35
  error ErrorInstanceServiceInstanceReaderZero();
38
36
  error ErrorInstanceServiceBundleSetZero();
37
+ error ErrorInstanceServiceRiskSetZero();
39
38
  error ErrorInstanceServiceInstanceStoreZero();
40
39
 
41
40
  error ErrorInstanceServiceInstanceAuthorityMismatch();
42
41
  error ErrorInstanceServiceBundleSetAuthorityMismatch();
42
+ error ErrorInstanceServiceRiskSetAuthorityMismatch();
43
43
  error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
44
- error ErrorInstanceServiceBundleMangerInstanceMismatch();
44
+ error ErrorInstanceServiceBundleSetInstanceMismatch();
45
+ error ErrorInstanceServiceRiskSetInstanceMismatch();
45
46
  error ErrorInstanceServiceInstanceStoreAuthorityMismatch();
46
47
 
47
48
  error ErrorInstanceServiceRequestUnauhorized(address caller);
@@ -52,21 +53,36 @@ interface IInstanceService is IService {
52
53
 
53
54
  event LogInstanceCloned(NftId instanceNftId, address instance);
54
55
 
55
- function createInstance()
56
+ /// @dev Locks the complete instance, including all its components.
57
+ function setInstanceLocked(bool locked) external;
58
+
59
+ /// @dev Locks/unlocks the specified target constrolled by the corresponding instance admin.
60
+ function setTargetLocked(address target, bool locked) external;
61
+
62
+ /// @dev Creates a new instance.
63
+ /// The caller becomes the owner of the new instance.
64
+ /// Creation of a new instance is achieved by this service through the creation and registration
65
+ /// of a new clone of the master instance and then setting up the initial wiring and authorization
66
+ /// of the necessary components.
67
+ /// @param allowAnyToken specifies whether the new instance is allowed to use any token or
68
+ /// only tokens that are registered in the `TokenRegistry`. Use of tokens **not** registered in the
69
+ /// `TokenRegistry` may result in problems with token handline and is therefor not recommended. The
70
+ /// use of such instances **is not supported** by Etherisc.
71
+ function createInstance(bool allowAnyToken)
56
72
  external
57
73
  returns (
58
- // TODO check if Instance can be changed to IInstance
59
- Instance clonedInstance,
74
+ IInstance instance,
60
75
  NftId instanceNftId
61
76
  );
62
77
 
78
+ function upgradeInstanceReader() external;
79
+ function upgradeMasterInstanceReader(address instanceReaderAddress) external;
63
80
 
64
81
  function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
65
82
  function setStakingRewardRate(UFixed rewardRate) external;
83
+ function setStakingMaxAmount(Amount maxStakedAmount) external;
66
84
  function refillStakingRewardReserves(address rewardProvider, Amount dipAmount) external;
67
85
 
68
86
  /// @dev Defunds the staking reward reserves for the specified target.
69
87
  function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
70
-
71
- function setComponentLocked(bool locked) external;
72
88
  }
@@ -1,38 +1,41 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
4
+ import {IInstance} from "./IInstance.sol";
5
+ import {IComponentService} from "../shared/IComponentService.sol";
6
+ import {IInstanceService} from "./IInstanceService.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
5
8
 
6
9
  import {Amount} from "../type/Amount.sol";
7
10
  import {BundleSet} from "./BundleSet.sol";
11
+ import {RiskSet} from "./RiskSet.sol";
8
12
  import {COMPONENT, INSTANCE} from "../type/ObjectType.sol";
9
- import {IInstance} from "./IInstance.sol";
10
- import {IComponentService} from "../shared/IComponentService.sol";
11
- import {IInstanceService} from "./IInstanceService.sol";
12
13
  import {InstanceReader} from "./InstanceReader.sol";
13
14
  import {InstanceAdmin} from "./InstanceAdmin.sol";
14
15
  import {InstanceStore} from "./InstanceStore.sol";
15
- import {IRegistry} from "../registry/IRegistry.sol";
16
16
  import {NftId} from "../type/NftId.sol";
17
17
  import {Registerable} from "../shared/Registerable.sol";
18
18
  import {RoleId} from "../type/RoleId.sol";
19
19
  import {Seconds} from "../type/Seconds.sol";
20
20
  import {UFixed} from "../type/UFixed.sol";
21
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
21
+ import {VersionPart} from "../type/Version.sol";
22
22
 
23
23
  contract Instance is
24
24
  IInstance,
25
- AccessManagedUpgradeable,
26
25
  Registerable
27
26
  {
28
27
  bool private _initialized;
29
28
 
30
29
  IComponentService internal _componentService;
31
30
  IInstanceService internal _instanceService;
31
+
32
32
  InstanceAdmin internal _instanceAdmin;
33
33
  InstanceReader internal _instanceReader;
34
- BundleSet internal _bundleManager;
34
+ BundleSet internal _bundleSet;
35
+ RiskSet internal _riskSet;
35
36
  InstanceStore internal _instanceStore;
37
+ NftId [] internal _products;
38
+ bool internal _tokenRegistryDisabled;
36
39
 
37
40
  modifier onlyChainNft() {
38
41
  if(msg.sender != getRegistry().getChainNftAddress()) {
@@ -44,24 +47,26 @@ contract Instance is
44
47
  function initialize(
45
48
  InstanceAdmin instanceAdmin,
46
49
  InstanceStore instanceStore,
47
- BundleSet bundleManager,
50
+ BundleSet bundleSet,
51
+ RiskSet riskSet,
48
52
  InstanceReader instanceReader,
49
53
  IRegistry registry,
50
- address initialOwner
54
+ VersionPart release,
55
+ address initialOwner,
56
+ bool tokenRegistryDisabled
51
57
  )
52
58
  external
53
59
  initializer()
54
60
  {
55
- _instanceAdmin = instanceAdmin;
56
- if(_instanceAdmin.authority() == address(0)) {
61
+ if(address(instanceAdmin) == address(0)) {
57
62
  revert ErrorInstanceInstanceAdminZero();
58
63
  }
59
64
 
60
- // set authority to instance admin authority
61
- __AccessManaged_init(_instanceAdmin.authority());
65
+ _instanceAdmin = instanceAdmin;
62
66
 
63
67
  // setup instance object info
64
- _initializeRegisterable(
68
+ __Registerable_init(
69
+ instanceAdmin.authority(),
65
70
  address(registry),
66
71
  registry.getNftId(),
67
72
  INSTANCE(),
@@ -71,40 +76,67 @@ contract Instance is
71
76
 
72
77
  // store instance supporting contracts
73
78
  _instanceStore = instanceStore;
74
- _bundleManager = bundleManager;
79
+ _bundleSet = bundleSet;
80
+ _riskSet = riskSet;
75
81
  _instanceReader = instanceReader;
76
82
 
77
83
  // initialize instance supporting contracts
78
84
  _instanceStore.initialize();
79
- _bundleManager.initialize();
85
+ _bundleSet.initialize(instanceAdmin.authority(), address(registry));
86
+ _riskSet.initialize(instanceAdmin.authority(), address(registry));
80
87
  _instanceReader.initialize();
81
88
 
82
89
  _componentService = IComponentService(
83
90
  getRegistry().getServiceAddress(
84
91
  COMPONENT(),
85
- getRelease()));
92
+ release));
86
93
 
87
94
  _instanceService = IInstanceService(
88
95
  getRegistry().getServiceAddress(
89
96
  INSTANCE(),
90
- getRelease()));
97
+ release));
98
+
99
+ _tokenRegistryDisabled = tokenRegistryDisabled;
91
100
 
92
101
  _registerInterface(type(IInstance).interfaceId);
93
102
  }
94
103
 
104
+
105
+ function setInstanceLocked(bool locked)
106
+ external
107
+ // not restricted(): need to be able to unlock a locked instance
108
+ onlyOwner()
109
+ {
110
+ _instanceService.setInstanceLocked(locked);
111
+ }
112
+
113
+
114
+ function upgradeInstanceReader()
115
+ external
116
+ restricted()
117
+ onlyOwner()
118
+ {
119
+ _instanceService.upgradeInstanceReader();
120
+ }
121
+
122
+
95
123
  //--- ProductRegistration ----------------------------------------------//
96
- function registerProduct(address product)
124
+
125
+ function registerProduct(address product, address token)
97
126
  external
127
+ restricted()
98
128
  onlyOwner()
99
129
  returns (NftId productNftId)
100
130
  {
101
- return _componentService.registerProduct(product);
131
+ productNftId = _componentService.registerProduct(product, token);
132
+ _products.push(productNftId);
102
133
  }
103
134
 
104
135
  //--- Staking ----------------------------------------------------------//
105
136
 
106
137
  function setStakingLockingPeriod(Seconds stakeLockingPeriod)
107
138
  external
139
+ restricted()
108
140
  onlyOwner()
109
141
  {
110
142
  _instanceService.setStakingLockingPeriod(stakeLockingPeriod);
@@ -112,13 +144,22 @@ contract Instance is
112
144
 
113
145
  function setStakingRewardRate(UFixed rewardRate)
114
146
  external
147
+ restricted()
115
148
  onlyOwner()
116
149
  {
117
150
  _instanceService.setStakingRewardRate(rewardRate);
118
151
  }
119
152
 
153
+ function setStakingMaxAmount(Amount maxStakedAmount)
154
+ external
155
+ onlyOwner()
156
+ {
157
+ _instanceService.setStakingMaxAmount(maxStakedAmount);
158
+ }
159
+
120
160
  function refillStakingRewardReserves(Amount dipAmount)
121
161
  external
162
+ restricted()
122
163
  onlyOwner()
123
164
  {
124
165
  address instanceOwner = msg.sender;
@@ -127,6 +168,7 @@ contract Instance is
127
168
 
128
169
  function withdrawStakingRewardReserves(Amount dipAmount)
129
170
  external
171
+ restricted()
130
172
  onlyOwner()
131
173
  returns (Amount newBalance)
132
174
  {
@@ -137,6 +179,7 @@ contract Instance is
137
179
 
138
180
  function createRole(string memory roleName, string memory adminName)
139
181
  external
182
+ restricted()
140
183
  onlyOwner()
141
184
  returns (RoleId roleId, RoleId admin)
142
185
  {
@@ -146,6 +189,7 @@ contract Instance is
146
189
 
147
190
  function grantRole(RoleId roleId, address account)
148
191
  external
192
+ restricted()
149
193
  onlyOwner()
150
194
  {
151
195
  _instanceAdmin.grantRole(roleId, account);
@@ -153,6 +197,7 @@ contract Instance is
153
197
 
154
198
  function revokeRole(RoleId roleId, address account)
155
199
  external
200
+ restricted()
156
201
  onlyOwner()
157
202
  {
158
203
  // TODO refactor
@@ -161,8 +206,18 @@ contract Instance is
161
206
 
162
207
  //--- Targets ------------------------------------------------------------//
163
208
 
209
+
210
+ function setTargetLocked(address target, bool locked)
211
+ external
212
+ // not restricted(): instance owner may need to be able to unlock targets on an locked instance
213
+ onlyOwner()
214
+ {
215
+ _instanceService.setTargetLocked(target, locked);
216
+ }
217
+
164
218
  function createTarget(address target, string memory name)
165
219
  external
220
+ restricted()
166
221
  onlyOwner()
167
222
  {
168
223
  // TODO refactor
@@ -175,20 +230,13 @@ contract Instance is
175
230
  RoleId roleId
176
231
  )
177
232
  external
233
+ restricted()
178
234
  onlyOwner()
179
235
  {
180
236
  // TODO refactor
181
237
  // _instanceAdmin.setTargetFunctionRoleByInstance(targetName, selectors, roleId);
182
238
  }
183
239
 
184
- function setTargetLocked(address target, bool locked)
185
- external
186
- onlyOwner()
187
- {
188
- // TODO refactor
189
- // _instanceAdmin.setTargetLockedByInstance(target, locked);
190
- }
191
-
192
240
  //--- ITransferInterceptor ----------------------------------------------//
193
241
 
194
242
  function nftTransferFrom(address from, address to, uint256 tokenId, address operator) external onlyChainNft {
@@ -212,12 +260,32 @@ contract Instance is
212
260
 
213
261
  //--- external view functions -------------------------------------------//
214
262
 
263
+ function isInstanceLocked() external view returns (bool) {
264
+ return _instanceAdmin.isLocked();
265
+ }
266
+
267
+ function isTargetLocked(address target) external view returns (bool) {
268
+ return _instanceAdmin.isTargetLocked(target);
269
+ }
270
+
271
+ function products() external view returns (uint256 productCount) {
272
+ return _products.length;
273
+ }
274
+
275
+ function getProductNftId(uint256 idx) external view returns (NftId productNftId) {
276
+ return _products[idx];
277
+ }
278
+
215
279
  function getInstanceReader() external view returns (InstanceReader) {
216
280
  return _instanceReader;
217
281
  }
218
282
 
219
283
  function getBundleSet() external view returns (BundleSet) {
220
- return _bundleManager;
284
+ return _bundleSet;
285
+ }
286
+
287
+ function getRiskSet() external view returns (RiskSet) {
288
+ return _riskSet;
221
289
  }
222
290
 
223
291
  function getInstanceAdmin() external view returns (InstanceAdmin) {
@@ -228,5 +296,9 @@ contract Instance is
228
296
  return _instanceStore;
229
297
  }
230
298
 
299
+ function isTokenRegistryDisabled() external view returns (bool) {
300
+ return _tokenRegistryDisabled;
301
+ }
302
+
231
303
  //--- internal view/pure functions --------------------------------------//
232
304
  }