@etherisc/gif-next 0.0.2-4c19d89-776 → 0.0.2-4c2fb12-528

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 (479) hide show
  1. package/README.md +108 -332
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +655 -299
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +331 -56
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +501 -231
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +131 -16
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +64 -152
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +322 -67
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -98
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +448 -148
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +163 -77
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -97
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +296 -20
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +109 -110
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +321 -66
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -134
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +321 -66
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +126 -176
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +321 -66
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -73
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -148
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +321 -66
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +333 -190
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +321 -66
  63. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  64. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  67. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  68. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +450 -28
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +355 -12
  73. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  74. package/artifacts/contracts/instance/Instance.sol/Instance.json +488 -85
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +942 -471
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +289 -78
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +615 -518
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +387 -64
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -52
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1328 -2007
  87. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  88. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +33 -45
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +340 -60
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -31
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -31
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +87 -42
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -79
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +321 -66
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +300 -123
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -58
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +186 -33
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -41
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +238 -19
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -41
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +100 -34
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +346 -87
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -63
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +273 -50
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +123 -41
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -58
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +321 -66
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -70
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +208 -1
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +50 -0
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -52
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +224 -18
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +511 -21
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +138 -72
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +116 -114
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +115 -65
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +40 -52
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +258 -44
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +104 -42
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +33 -22
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +71 -60
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +799 -472
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +841 -419
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +197 -129
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +19 -31
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +212 -232
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +133 -71
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +130 -39
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -31
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +119 -147
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -31
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  231. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
  236. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  239. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  241. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -31
  243. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  245. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  246. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  248. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  249. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  250. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  253. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  254. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  261. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  262. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  263. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1453 -153
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +161 -110
  266. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  267. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  268. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  269. package/artifacts/contracts/staking/Staking.sol/Staking.json +1565 -239
  270. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  272. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +146 -67
  274. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
  276. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +200 -157
  278. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +98 -44
  280. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1633 -819
  282. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  283. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  285. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +159 -87
  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 +10 -10
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  291. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  292. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  293. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  295. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  297. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
  299. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  301. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  302. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  303. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  305. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  306. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  307. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  309. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  311. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  313. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  315. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  317. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
  319. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  321. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  326. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
  328. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
  330. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  332. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -2
  334. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  336. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  337. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
  338. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  339. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  340. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  342. package/contracts/accounting/AccountingService.sol +15 -3
  343. package/contracts/accounting/IAccountingService.sol +4 -2
  344. package/contracts/authorization/AccessAdmin.sol +361 -371
  345. package/contracts/authorization/AccessAdminLib.sol +678 -0
  346. package/contracts/authorization/AccessManagerCloneable.sol +23 -32
  347. package/contracts/authorization/Authorization.sol +82 -229
  348. package/contracts/authorization/IAccess.sol +29 -12
  349. package/contracts/authorization/IAccessAdmin.sol +83 -84
  350. package/contracts/authorization/IAuthorization.sol +3 -51
  351. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  352. package/contracts/authorization/ServiceAuthorization.sol +228 -34
  353. package/contracts/distribution/BasicDistribution.sol +7 -8
  354. package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
  355. package/contracts/distribution/Distribution.sol +12 -56
  356. package/contracts/distribution/DistributionService.sol +154 -64
  357. package/contracts/distribution/IDistributionComponent.sol +3 -10
  358. package/contracts/distribution/IDistributionService.sol +24 -10
  359. package/contracts/examples/fire/FirePool.sol +0 -4
  360. package/contracts/examples/fire/FireProduct.sol +6 -10
  361. package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
  362. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  363. package/contracts/examples/unpermissioned/SimplePool.sol +0 -4
  364. package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -23
  365. package/contracts/instance/BaseStore.sol +93 -0
  366. package/contracts/instance/IBaseStore.sol +37 -0
  367. package/contracts/instance/IInstance.sol +98 -12
  368. package/contracts/instance/IInstanceService.sol +54 -7
  369. package/contracts/instance/Instance.sol +165 -61
  370. package/contracts/instance/InstanceAdmin.sol +183 -313
  371. package/contracts/instance/InstanceAuthorizationV3.sol +123 -61
  372. package/contracts/instance/InstanceReader.sol +354 -385
  373. package/contracts/instance/InstanceService.sol +283 -173
  374. package/contracts/instance/InstanceStore.sol +153 -128
  375. package/contracts/instance/ProductStore.sol +290 -0
  376. package/contracts/instance/RiskSet.sol +10 -2
  377. package/contracts/instance/TargetNames.sol +10 -0
  378. package/contracts/instance/base/BalanceStore.sol +4 -6
  379. package/contracts/instance/base/ObjectLifecycle.sol +2 -6
  380. package/contracts/instance/module/IBundle.sol +6 -5
  381. package/contracts/instance/module/IComponents.sol +15 -6
  382. package/contracts/instance/module/IDistribution.sol +19 -7
  383. package/contracts/instance/module/IPolicy.sol +28 -8
  384. package/contracts/instance/module/IRisk.sol +2 -0
  385. package/contracts/oracle/BasicOracle.sol +3 -6
  386. package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
  387. package/contracts/oracle/IOracle.sol +9 -4
  388. package/contracts/oracle/Oracle.sol +4 -8
  389. package/contracts/oracle/OracleService.sol +8 -8
  390. package/contracts/pool/BasicPool.sol +4 -18
  391. package/contracts/pool/BasicPoolAuthorization.sol +10 -5
  392. package/contracts/pool/BundleService.sol +34 -43
  393. package/contracts/pool/IBundleService.sol +14 -13
  394. package/contracts/pool/IPoolService.sol +7 -2
  395. package/contracts/pool/Pool.sol +6 -20
  396. package/contracts/pool/PoolLib.sol +127 -2
  397. package/contracts/pool/PoolService.sol +41 -184
  398. package/contracts/product/ApplicationService.sol +85 -17
  399. package/contracts/product/BasicProduct.sol +2 -5
  400. package/contracts/product/BasicProductAuthorization.sol +11 -4
  401. package/contracts/product/ClaimService.sol +99 -105
  402. package/contracts/product/IApplicationService.sol +24 -2
  403. package/contracts/product/IClaimService.sol +5 -4
  404. package/contracts/product/IPolicyService.sol +9 -2
  405. package/contracts/product/IPricingService.sol +1 -0
  406. package/contracts/product/IRiskService.sol +21 -3
  407. package/contracts/product/PolicyService.sol +40 -77
  408. package/contracts/product/PolicyServiceLib.sol +79 -5
  409. package/contracts/product/PricingService.sol +33 -31
  410. package/contracts/product/Product.sol +40 -18
  411. package/contracts/product/RiskService.sol +57 -12
  412. package/contracts/registry/IRegistry.sol +15 -9
  413. package/contracts/registry/IRelease.sol +6 -3
  414. package/contracts/registry/Registry.sol +15 -9
  415. package/contracts/registry/RegistryAdmin.sol +85 -266
  416. package/contracts/registry/RegistryAuthorization.sol +337 -0
  417. package/contracts/registry/RegistryService.sol +1 -1
  418. package/contracts/registry/ReleaseAdmin.sol +70 -116
  419. package/contracts/registry/ReleaseRegistry.sol +57 -43
  420. package/contracts/registry/ServiceAuthorizationV3.sol +128 -33
  421. package/contracts/registry/TokenRegistry.sol +56 -52
  422. package/contracts/shared/Component.sol +20 -37
  423. package/contracts/shared/ComponentService.sol +249 -250
  424. package/contracts/shared/ContractLib.sol +134 -75
  425. package/contracts/shared/IComponent.sol +1 -4
  426. package/contracts/shared/IComponentService.sol +21 -22
  427. package/contracts/shared/INftOwnable.sol +2 -0
  428. package/contracts/shared/IRegisterable.sol +0 -1
  429. package/contracts/shared/InitializableERC165.sol +9 -1
  430. package/contracts/shared/InstanceLinkedComponent.sol +6 -11
  431. package/contracts/shared/NftOwnable.sol +4 -2
  432. package/contracts/shared/PolicyHolder.sol +3 -2
  433. package/contracts/shared/Registerable.sol +1 -4
  434. package/contracts/shared/Service.sol +6 -4
  435. package/contracts/shared/TokenHandler.sol +5 -4
  436. package/contracts/staking/IStaking.sol +265 -64
  437. package/contracts/staking/IStakingService.sol +44 -82
  438. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  439. package/contracts/staking/Staking.sol +475 -204
  440. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
  441. package/contracts/staking/StakingManager.sol +4 -3
  442. package/contracts/staking/StakingReader.sol +58 -77
  443. package/contracts/staking/StakingService.sol +49 -158
  444. package/contracts/staking/StakingServiceManager.sol +1 -0
  445. package/contracts/staking/StakingStore.sol +1093 -330
  446. package/contracts/staking/TargetHandler.sol +132 -0
  447. package/contracts/staking/TargetManagerLib.sol +69 -46
  448. package/contracts/type/Amount.sol +4 -0
  449. package/contracts/type/Blocknumber.sol +17 -22
  450. package/contracts/type/ChainId.sol +101 -0
  451. package/contracts/type/Fee.sol +8 -8
  452. package/contracts/type/NftId.sol +3 -3
  453. package/contracts/type/ObjectType.sol +21 -17
  454. package/contracts/type/RoleId.sol +57 -59
  455. package/contracts/type/Seconds.sol +19 -0
  456. package/contracts/type/String.sol +12 -0
  457. package/contracts/type/Timestamp.sol +4 -2
  458. package/contracts/type/UFixed.sol +28 -10
  459. package/contracts/type/Version.sol +39 -0
  460. package/contracts/upgradeability/IVersionable.sol +3 -0
  461. package/contracts/upgradeability/ProxyManager.sol +26 -12
  462. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  463. package/contracts/upgradeability/Versionable.sol +6 -3
  464. package/package.json +1 -1
  465. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  466. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
  467. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  468. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
  469. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  470. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  471. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
  472. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  473. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  474. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  475. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  476. package/contracts/shared/ComponentVerifyingService.sol +0 -128
  477. package/contracts/shared/IKeyValueStore.sol +0 -54
  478. package/contracts/shared/KeyValueStore.sol +0 -131
  479. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -1,11 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount} from "../type/Amount.sol";
4
+ import {IAccess} from "../authorization/IAccess.sol";
5
5
  import {IInstance} from "./IInstance.sol";
6
6
  import {IService} from "../shared/IService.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
7
9
  import {NftId} from "../type/NftId.sol";
8
10
  import {ObjectType} from "../type/ObjectType.sol";
11
+ import {RoleId} from "../type/RoleId.sol";
9
12
  import {Seconds} from "../type/Seconds.sol";
10
13
  import {UFixed} from "../type/UFixed.sol";
11
14
  import {VersionPart} from "../type/Version.sol";
@@ -15,7 +18,7 @@ interface IInstanceService is IService {
15
18
  // onlyInstance
16
19
  error ErrorInstanceServiceNotRegistered(address instance);
17
20
  error ErrorInstanceServiceNotInstance(address instance, ObjectType objectType);
18
- error ErrorInstanceServiceInstanceVersionMismatch(address instance, VersionPart instanceVersion);
21
+ error ErrorInstanceServiceInstanceVersionMismatch(NftId instanceNftId, VersionPart expectedRelease, VersionPart instanceRelease);
19
22
 
20
23
  error ErrorInstanceServiceComponentNotInstanceLinked(address component);
21
24
 
@@ -36,6 +39,7 @@ interface IInstanceService is IService {
36
39
  error ErrorInstanceServiceBundleSetZero();
37
40
  error ErrorInstanceServiceRiskSetZero();
38
41
  error ErrorInstanceServiceInstanceStoreZero();
42
+ error ErrorInstanceServiceProductStoreZero();
39
43
 
40
44
  error ErrorInstanceServiceInstanceAuthorityMismatch();
41
45
  error ErrorInstanceServiceBundleSetAuthorityMismatch();
@@ -44,6 +48,7 @@ interface IInstanceService is IService {
44
48
  error ErrorInstanceServiceBundleSetInstanceMismatch();
45
49
  error ErrorInstanceServiceRiskSetInstanceMismatch();
46
50
  error ErrorInstanceServiceInstanceStoreAuthorityMismatch();
51
+ error ErrorInstanceServiceProductStoreAuthorityMismatch();
47
52
 
48
53
  error ErrorInstanceServiceRequestUnauhorized(address caller);
49
54
  error ErrorInstanceServiceNotInstanceNftId(NftId nftId);
@@ -51,22 +56,64 @@ interface IInstanceService is IService {
51
56
  error ErrorInstanceServiceInstanceComponentMismatch(NftId instanceNftId, NftId componentNftId);
52
57
  error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
53
58
 
54
- event LogInstanceCloned(NftId instanceNftId, address instance);
59
+ event LogInstanceServiceInstanceLocked(NftId instanceNftId, bool locked);
60
+ event LogInstanceServiceInstanceCreated(NftId instanceNftId, address instance);
61
+ event LogInstanceServiceMasterInstanceReaderUpgraded(NftId instanceNfId, address newInstanceReader);
62
+ event LogInstanceServiceInstanceReaderUpgraded(NftId instanceNfId, address newInstanceReader);
63
+
64
+ /// @dev Creates a new custom role for the calling instance.
65
+ function createRole(string memory roleName, RoleId adminRoleId, uint32 maxMemberCount) external returns (RoleId roleId);
66
+
67
+ /// @dev Sets the specified custom role as active or inactive for the calling instance.
68
+ function setRoleActive(RoleId roleId, bool active) external;
69
+
70
+ /// @dev Grants the specified custom role to the specified account for the calling instance.
71
+ function grantRole(RoleId roleId, address account) external;
72
+
73
+ /// @dev Revokes the specified custom role from the specified account for the calling instance.
74
+ function revokeRole(RoleId roleId, address account) external;
55
75
 
56
- function createInstance()
76
+ /// @dev Creates a new custom target for the calling instance.
77
+ /// All custom trargets are created with a corresponding contract role.
78
+ function createTarget(address target, string memory name) external returns (RoleId contractRoleId);
79
+
80
+ /// @dev Authorizes the specified functions for the specified target.
81
+ function authorizeFunctions(address target, RoleId roleId, IAccess.FunctionInfo[] memory functions) external;
82
+
83
+ /// @dev Removes any role authorization for the specified functions.
84
+ function unauthorizeFunctions(address target, IAccess.FunctionInfo[] memory functions) external;
85
+
86
+ /// @dev Locks/unlocks the specified target constrolled by the corresponding instance admin.
87
+ function setTargetLocked(address target, bool locked) external;
88
+
89
+ /// @dev Locks the complete instance, including all its components.
90
+ function setInstanceLocked(bool locked) external;
91
+
92
+ /// @dev Creates a new instance.
93
+ /// The caller becomes the owner of the new instance.
94
+ /// Creation of a new instance is achieved by this service through the creation and registration
95
+ /// of a new clone of the master instance and then setting up the initial wiring and authorization
96
+ /// of the necessary components.
97
+ /// @param allowAnyToken specifies whether the new instance is allowed to use any token or
98
+ /// only tokens that are registered in the `TokenRegistry`. Use of tokens **not** registered in the
99
+ /// `TokenRegistry` may result in problems with token handline and is therefor not recommended. The
100
+ /// use of such instances **is not supported** by Etherisc.
101
+ function createInstance(bool allowAnyToken)
57
102
  external
58
103
  returns (
59
104
  IInstance instance,
60
105
  NftId instanceNftId
61
106
  );
62
107
 
63
- function upgradeInstanceReader(NftId instanceNftId) external;
108
+ function upgradeInstanceReader() external;
64
109
  function upgradeMasterInstanceReader(address instanceReaderAddress) external;
65
110
 
66
111
  function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
67
112
  function setStakingRewardRate(UFixed rewardRate) external;
68
- function refillStakingRewardReserves(address rewardProvider, Amount dipAmount) external;
113
+ function setStakingMaxAmount(Amount maxStakedAmount) external;
114
+
115
+ function refillInstanceRewardReserves(address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
69
116
 
70
117
  /// @dev Defunds the staking reward reserves for the specified target.
71
- function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
118
+ function withdrawInstanceRewardReserves(Amount dipAmount) external returns (Amount newBalance);
72
119
  }
@@ -1,22 +1,26 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IAccess} from "../authorization/IAccess.sol";
5
+ import {IInstance} from "./IInstance.sol";
6
+ import {IComponentService} from "../shared/IComponentService.sol";
7
+ import {IInstanceService} from "./IInstanceService.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+
4
10
  import {Amount} from "../type/Amount.sol";
5
11
  import {BundleSet} from "./BundleSet.sol";
6
12
  import {RiskSet} from "./RiskSet.sol";
7
13
  import {COMPONENT, INSTANCE} from "../type/ObjectType.sol";
8
- import {IInstance} from "./IInstance.sol";
9
- import {IComponentService} from "../shared/IComponentService.sol";
10
- import {IInstanceService} from "./IInstanceService.sol";
11
14
  import {InstanceReader} from "./InstanceReader.sol";
12
15
  import {InstanceAdmin} from "./InstanceAdmin.sol";
13
16
  import {InstanceStore} from "./InstanceStore.sol";
14
- import {IRegistry} from "../registry/IRegistry.sol";
15
17
  import {NftId} from "../type/NftId.sol";
18
+ import {ProductStore} from "./ProductStore.sol";
16
19
  import {Registerable} from "../shared/Registerable.sol";
17
20
  import {RoleId} from "../type/RoleId.sol";
18
21
  import {Seconds} from "../type/Seconds.sol";
19
22
  import {UFixed} from "../type/UFixed.sol";
23
+ import {VersionPart} from "../type/Version.sol";
20
24
 
21
25
  contract Instance is
22
26
  IInstance,
@@ -32,76 +36,110 @@ contract Instance is
32
36
  BundleSet internal _bundleSet;
33
37
  RiskSet internal _riskSet;
34
38
  InstanceStore internal _instanceStore;
39
+ ProductStore internal _productStore;
35
40
  NftId [] internal _products;
41
+ bool internal _tokenRegistryDisabled;
36
42
 
37
- modifier onlyChainNft() {
38
- if(msg.sender != getRegistry().getChainNftAddress()) {
39
- revert();
43
+
44
+ modifier onlyCustomRoleAdmin(RoleId roleId) {
45
+ if (!_instanceAdmin.isRoleCustom(roleId)) {
46
+ revert ErrorInstanceNotCustomRole(roleId);
47
+ }
48
+
49
+ // instance owner can always act as role admin
50
+ address account = msg.sender;
51
+ if (account != getOwner()) {
52
+ if (!_instanceAdmin.isRoleAdmin(roleId, account)) {
53
+ revert ErrorInstanceNotRoleAdmin(roleId, account);
54
+ }
40
55
  }
41
56
  _;
42
57
  }
43
58
 
59
+
44
60
  function initialize(
45
- InstanceAdmin instanceAdmin,
46
- InstanceStore instanceStore,
47
- BundleSet bundleSet,
48
- RiskSet riskSet,
49
- InstanceReader instanceReader,
61
+ InstanceContracts memory instanceContracts,
50
62
  IRegistry registry,
51
- address initialOwner
63
+ VersionPart release,
64
+ address initialOwner,
65
+ bool tokenRegistryDisabled // only disable for testing
52
66
  )
53
67
  external
54
68
  initializer()
55
69
  {
56
- if(address(instanceAdmin) == address(0)) {
70
+ if(address(instanceContracts.instanceAdmin) == address(0)) {
57
71
  revert ErrorInstanceInstanceAdminZero();
58
72
  }
59
73
 
60
- _instanceAdmin = instanceAdmin;
74
+ _instanceAdmin = instanceContracts.instanceAdmin;
61
75
 
62
76
  // setup instance object info
63
- __Registerable_init(
64
- instanceAdmin.authority(),
65
- address(registry),
66
- registry.getNftId(),
67
- INSTANCE(),
68
- true,
69
- initialOwner,
70
- "");
77
+ __Registerable_init({
78
+ authority: instanceContracts.instanceAdmin.authority(),
79
+ registry: address(registry),
80
+ parentNftId: registry.getNftId(),
81
+ objectType: INSTANCE(),
82
+ isInterceptor: false,
83
+ initialOwner: initialOwner,
84
+ data: ""});
71
85
 
72
86
  // store instance supporting contracts
73
- _instanceStore = instanceStore;
74
- _bundleSet = bundleSet;
75
- _riskSet = riskSet;
76
- _instanceReader = instanceReader;
87
+ _instanceStore = instanceContracts.instanceStore;
88
+ _productStore = instanceContracts.productStore;
89
+ _bundleSet = instanceContracts.bundleSet;
90
+ _riskSet = instanceContracts.riskSet;
91
+ _instanceReader = instanceContracts.instanceReader;
77
92
 
78
93
  // initialize instance supporting contracts
79
94
  _instanceStore.initialize();
80
- _bundleSet.initialize(instanceAdmin.authority(), address(registry));
81
- _riskSet.initialize(instanceAdmin.authority(), address(registry));
95
+ _productStore.initialize();
96
+ _bundleSet.initialize(instanceContracts.instanceAdmin.authority(), address(registry));
97
+ _riskSet.initialize(instanceContracts.instanceAdmin.authority(), address(registry));
82
98
  _instanceReader.initialize();
83
99
 
84
100
  _componentService = IComponentService(
85
101
  getRegistry().getServiceAddress(
86
102
  COMPONENT(),
87
- getRelease()));
103
+ release));
88
104
 
89
105
  _instanceService = IInstanceService(
90
106
  getRegistry().getServiceAddress(
91
107
  INSTANCE(),
92
- getRelease()));
108
+ release));
109
+
110
+ _tokenRegistryDisabled = tokenRegistryDisabled;
93
111
 
94
112
  _registerInterface(type(IInstance).interfaceId);
95
113
  }
96
114
 
115
+
116
+ function setInstanceLocked(bool locked)
117
+ external
118
+ // not restricted(): need to be able to unlock a locked instance
119
+ onlyOwner()
120
+ {
121
+ _instanceService.setInstanceLocked(locked);
122
+ }
123
+
124
+
125
+ function upgradeInstanceReader()
126
+ external
127
+ restricted()
128
+ onlyOwner()
129
+ {
130
+ _instanceService.upgradeInstanceReader();
131
+ }
132
+
133
+
97
134
  //--- ProductRegistration ----------------------------------------------//
98
135
 
99
- function registerProduct(address product)
136
+ function registerProduct(address product, address token)
100
137
  external
138
+ restricted()
101
139
  onlyOwner()
102
140
  returns (NftId productNftId)
103
141
  {
104
- productNftId = _componentService.registerProduct(product);
142
+ productNftId = _componentService.registerProduct(product, token);
105
143
  _products.push(productNftId);
106
144
  }
107
145
 
@@ -109,6 +147,7 @@ contract Instance is
109
147
 
110
148
  function setStakingLockingPeriod(Seconds stakeLockingPeriod)
111
149
  external
150
+ restricted()
112
151
  onlyOwner()
113
152
  {
114
153
  _instanceService.setStakingLockingPeriod(stakeLockingPeriod);
@@ -116,87 +155,138 @@ contract Instance is
116
155
 
117
156
  function setStakingRewardRate(UFixed rewardRate)
118
157
  external
158
+ restricted()
119
159
  onlyOwner()
120
160
  {
121
161
  _instanceService.setStakingRewardRate(rewardRate);
122
162
  }
123
163
 
164
+ function setStakingMaxAmount(Amount maxStakedAmount)
165
+ external
166
+ restricted()
167
+ onlyOwner()
168
+ {
169
+ _instanceService.setStakingMaxAmount(maxStakedAmount);
170
+ }
171
+
124
172
  function refillStakingRewardReserves(Amount dipAmount)
125
173
  external
174
+ restricted()
126
175
  onlyOwner()
176
+ returns (Amount newRewardReserveBalance)
127
177
  {
128
178
  address instanceOwner = msg.sender;
129
- _instanceService.refillStakingRewardReserves(instanceOwner, dipAmount);
179
+ return _instanceService.refillInstanceRewardReserves(instanceOwner, dipAmount);
130
180
  }
131
181
 
132
182
  function withdrawStakingRewardReserves(Amount dipAmount)
133
183
  external
184
+ restricted()
134
185
  onlyOwner()
135
- returns (Amount newBalance)
186
+ returns (Amount newRewardReserveBalance)
136
187
  {
137
- return _instanceService.withdrawStakingRewardReserves(dipAmount);
188
+ return _instanceService.withdrawInstanceRewardReserves(dipAmount);
138
189
  }
139
190
 
140
191
  //--- Roles ------------------------------------------------------------//
141
192
 
142
- function createRole(string memory roleName, string memory adminName)
193
+ /// @inheritdoc IInstance
194
+ function createRole(
195
+ string memory roleName,
196
+ RoleId adminRoleId,
197
+ uint32 maxMemberCount
198
+ )
143
199
  external
200
+ restricted()
144
201
  onlyOwner()
145
- returns (RoleId roleId, RoleId admin)
202
+ returns (RoleId roleId)
146
203
  {
147
- // TODO refactor
148
- // (roleId, admin) = _instanceAdmin.createRole(roleName, adminName);
204
+ roleId = _instanceService.createRole(roleName, adminRoleId, maxMemberCount);
205
+ emit LogInstanceCustomRoleCreated(roleId, roleName, adminRoleId, maxMemberCount);
149
206
  }
150
207
 
208
+
209
+ /// @inheritdoc IInstance
210
+ function setRoleActive(RoleId roleId, bool active)
211
+ external
212
+ restricted()
213
+ onlyCustomRoleAdmin(roleId)
214
+ {
215
+ _instanceService.setRoleActive(roleId, active);
216
+ emit LogInstanceCustomRoleActiveSet(roleId, active, msg.sender);
217
+ }
218
+
219
+
220
+ /// @inheritdoc IInstance
151
221
  function grantRole(RoleId roleId, address account)
152
222
  external
153
- onlyOwner()
223
+ restricted()
224
+ onlyCustomRoleAdmin(roleId)
154
225
  {
155
- _instanceAdmin.grantRole(roleId, account);
226
+ _instanceService.grantRole(roleId, account);
227
+ emit LogInstanceCustomRoleGranted(roleId, account, msg.sender);
156
228
  }
157
229
 
230
+
231
+ /// @inheritdoc IInstance
158
232
  function revokeRole(RoleId roleId, address account)
159
233
  external
160
- onlyOwner()
234
+ restricted()
235
+ onlyCustomRoleAdmin(roleId)
161
236
  {
162
- // TODO refactor
163
- // AccessManagerExtendedInitializeable(authority()).revokeRole(roleId.toInt(), account);
237
+ _instanceService.revokeRole(roleId, account);
238
+ emit LogInstanceCustomRoleRevoked(roleId, account, msg.sender);
164
239
  }
165
240
 
166
241
  //--- Targets ------------------------------------------------------------//
167
242
 
243
+ /// @inheritdoc IInstance
168
244
  function createTarget(address target, string memory name)
169
245
  external
246
+ restricted()
170
247
  onlyOwner()
248
+ returns (RoleId targetRoleId)
171
249
  {
172
- // TODO refactor
173
- // _instanceAdmin.createTarget(target, name);
250
+ targetRoleId = _instanceService.createTarget(target, name);
251
+ emit LogInstanceCustomTargetCreated(target, targetRoleId, name);
174
252
  }
175
253
 
176
- function setTargetFunctionRole(
177
- string memory targetName,
178
- bytes4[] calldata selectors,
179
- RoleId roleId
180
- )
254
+
255
+ /// @inheritdoc IInstance
256
+ function setTargetLocked(address target, bool locked)
181
257
  external
258
+ // not restricted(): instance owner may need to be able to unlock targets on an locked instance
182
259
  onlyOwner()
183
260
  {
184
- // TODO refactor
185
- // _instanceAdmin.setTargetFunctionRoleByInstance(targetName, selectors, roleId);
261
+ _instanceService.setTargetLocked(target, locked);
262
+ emit LogInstanceTargetLocked(target, locked);
186
263
  }
187
264
 
188
- function setLocked(address target, bool locked)
265
+
266
+ /// @inheritdoc IInstance
267
+ function authorizeFunctions(
268
+ address target,
269
+ RoleId roleId,
270
+ IAccess.FunctionInfo[] memory functions
271
+ )
189
272
  external
273
+ restricted()
190
274
  onlyOwner()
191
275
  {
192
- _componentService.setLockedFromInstance(target, locked);
276
+ _instanceService.authorizeFunctions(target, roleId, functions);
193
277
  }
194
278
 
195
- //--- ITransferInterceptor ----------------------------------------------//
196
279
 
197
- function nftTransferFrom(address from, address to, uint256 tokenId, address operator) external onlyChainNft {
198
- // TODO refactor
199
- // _instanceAdmin.transferInstanceOwnerRole(from, to);
280
+ /// @inheritdoc IInstance
281
+ function unauthorizeFunctions(
282
+ address target,
283
+ IAccess.FunctionInfo[] memory functions
284
+ )
285
+ external
286
+ restricted()
287
+ onlyOwner()
288
+ {
289
+ _instanceService.unauthorizeFunctions(target, functions);
200
290
  }
201
291
 
202
292
  //--- initial setup functions -------------------------------------------//
@@ -215,6 +305,14 @@ contract Instance is
215
305
 
216
306
  //--- external view functions -------------------------------------------//
217
307
 
308
+ function isInstanceLocked() external view returns (bool) {
309
+ return _instanceAdmin.isLocked();
310
+ }
311
+
312
+ function isTargetLocked(address target) external view returns (bool) {
313
+ return _instanceAdmin.isTargetLocked(target);
314
+ }
315
+
218
316
  function products() external view returns (uint256 productCount) {
219
317
  return _products.length;
220
318
  }
@@ -243,5 +341,11 @@ contract Instance is
243
341
  return _instanceStore;
244
342
  }
245
343
 
246
- //--- internal view/pure functions --------------------------------------//
344
+ function getProductStore() external view returns (ProductStore) {
345
+ return _productStore;
346
+ }
347
+
348
+ function isTokenRegistryDisabled() external view returns (bool) {
349
+ return _tokenRegistryDisabled;
350
+ }
247
351
  }