@etherisc/gif-next 0.0.2-d39f345-355 → 0.0.2-d3a9310-013

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 (723) hide show
  1. package/README.md +133 -10
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → distribution/Distribution.sol/Distribution.json} +304 -324
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +930 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +293 -275
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +534 -340
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1472 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2045 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1423 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1639 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2551 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +569 -2034
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +517 -74
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +611 -2581
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1941 -698
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +529 -347
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +201 -170
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3784 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  105. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  106. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  116. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → oracle/IOracleService.sol/IOracleService.json} +339 -179
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  118. package/artifacts/contracts/{components/Component.sol/Component.json → oracle/Oracle.sol/Oracle.json} +272 -241
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  124. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +339 -473
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  132. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → pool/IBundleService.sol/IBundleService.json} +530 -457
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +905 -0
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  138. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → pool/Pool.sol/Pool.json} +384 -423
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  150. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +475 -483
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  158. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → product/IApplicationService.sol/IApplicationService.json} +311 -216
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  162. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +331 -264
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  164. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +202 -177
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1016 -0
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  168. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → product/IRiskService.sol/IRiskService.json} +261 -203
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  180. package/artifacts/contracts/product/Product.sol/Product.json +1117 -0
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +496 -31
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +315 -109
  191. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  193. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  195. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/Registry.sol/Registry.json +984 -128
  197. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2147 -0
  199. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  201. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +390 -250
  203. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +212 -109
  205. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  207. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  209. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  211. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  213. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +317 -154
  215. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  216. package/artifacts/contracts/shared/Component.sol/Component.json +705 -0
  217. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1535 -0
  219. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +854 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  229. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  230. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +156 -131
  231. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  232. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IComponentService.sol/IComponentService.json} +573 -743
  233. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  235. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  236. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  237. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  238. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  239. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +38 -10
  241. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  243. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +163 -3
  245. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  247. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IService.sol/IService.json +98 -5
  249. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  250. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  251. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  252. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +795 -0
  253. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  254. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  255. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  257. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  259. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +47 -70
  261. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  263. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +145 -100
  265. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  267. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  268. package/artifacts/contracts/shared/Service.sol/Service.json +95 -109
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  273. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  275. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1646 -0
  277. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1196 -0
  279. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  280. package/artifacts/contracts/staking/Staking.sol/Staking.json +2054 -0
  281. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  282. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  283. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  284. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  285. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +842 -0
  287. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +616 -0
  289. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1425 -0
  291. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +782 -0
  293. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2297 -0
  295. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  296. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +617 -0
  297. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  298. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  299. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  300. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  301. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  302. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  303. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  304. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  305. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  306. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  307. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  308. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  309. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  310. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  311. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  312. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  313. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  314. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  315. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  316. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  317. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  318. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  319. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  320. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  321. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  322. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  323. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  324. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  325. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  326. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  327. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  328. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  329. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  330. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +265 -0
  331. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  332. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  333. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  334. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  335. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  336. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  337. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  338. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  339. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  340. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -7
  341. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  342. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  343. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  344. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  345. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  346. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  347. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  348. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  349. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  350. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  351. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  352. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  353. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  354. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  355. package/contracts/accounting/AccountingService.sol +274 -0
  356. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  357. package/contracts/accounting/IAccountingService.sol +47 -0
  358. package/contracts/authorization/AccessAdmin.sol +780 -0
  359. package/contracts/authorization/AccessAdminLib.sol +396 -0
  360. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  361. package/contracts/authorization/Authorization.sol +169 -0
  362. package/contracts/authorization/IAccess.sol +67 -0
  363. package/contracts/authorization/IAccessAdmin.sol +144 -0
  364. package/contracts/authorization/IAuthorization.sol +27 -0
  365. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  366. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  367. package/contracts/distribution/BasicDistribution.sol +141 -0
  368. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  369. package/contracts/distribution/Distribution.sol +247 -0
  370. package/contracts/distribution/DistributionService.sol +448 -0
  371. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  372. package/contracts/distribution/IDistributionComponent.sol +45 -0
  373. package/contracts/distribution/IDistributionService.sol +115 -0
  374. package/contracts/examples/fire/DamageLevel.sol +59 -0
  375. package/contracts/examples/fire/FirePool.sol +86 -0
  376. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  377. package/contracts/examples/fire/FireProduct.sol +433 -0
  378. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  379. package/contracts/examples/fire/FireUSD.sol +26 -0
  380. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  381. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  382. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  383. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  384. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  385. package/contracts/examples/unpermissioned/SimpleProduct.sol +422 -0
  386. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  387. package/contracts/instance/BundleSet.sol +130 -0
  388. package/contracts/instance/IInstance.sol +117 -74
  389. package/contracts/instance/IInstanceService.sol +83 -35
  390. package/contracts/instance/Instance.sol +245 -209
  391. package/contracts/instance/InstanceAdmin.sol +383 -0
  392. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  393. package/contracts/instance/InstanceReader.sol +520 -205
  394. package/contracts/instance/InstanceService.sol +386 -365
  395. package/contracts/instance/InstanceServiceManager.sol +14 -29
  396. package/contracts/instance/InstanceStore.sol +298 -0
  397. package/contracts/instance/RiskSet.sol +126 -0
  398. package/contracts/instance/base/BalanceStore.sol +121 -0
  399. package/contracts/instance/base/Cloneable.sol +28 -0
  400. package/contracts/instance/base/ObjectCounter.sol +20 -0
  401. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  402. package/contracts/instance/base/ObjectSet.sol +77 -0
  403. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  404. package/contracts/instance/module/IBundle.sol +9 -11
  405. package/contracts/instance/module/IComponents.sol +44 -23
  406. package/contracts/instance/module/IDistribution.sol +25 -12
  407. package/contracts/instance/module/IPolicy.sol +67 -39
  408. package/contracts/instance/module/IRisk.sol +6 -1
  409. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  410. package/contracts/oracle/BasicOracle.sol +45 -0
  411. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  412. package/contracts/oracle/IOracle.sol +41 -0
  413. package/contracts/oracle/IOracleComponent.sol +33 -0
  414. package/contracts/oracle/IOracleService.sol +66 -0
  415. package/contracts/oracle/Oracle.sol +154 -0
  416. package/contracts/oracle/OracleService.sol +310 -0
  417. package/contracts/oracle/OracleServiceManager.sol +39 -0
  418. package/contracts/pool/BasicPool.sol +162 -0
  419. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  420. package/contracts/pool/BundleService.sol +386 -0
  421. package/contracts/pool/BundleServiceManager.sol +39 -0
  422. package/contracts/pool/IBundleService.sol +116 -0
  423. package/contracts/pool/IPoolComponent.sol +62 -0
  424. package/contracts/pool/IPoolService.sol +170 -0
  425. package/contracts/pool/Pool.sol +333 -0
  426. package/contracts/pool/PoolLib.sol +341 -0
  427. package/contracts/pool/PoolService.sol +614 -0
  428. package/contracts/pool/PoolServiceManager.sol +39 -0
  429. package/contracts/product/ApplicationService.sol +327 -0
  430. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  431. package/contracts/product/BasicProduct.sol +49 -0
  432. package/contracts/product/BasicProductAuthorization.sol +63 -0
  433. package/contracts/product/ClaimService.sol +632 -0
  434. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  435. package/contracts/{instance/service → product}/IApplicationService.sol +41 -31
  436. package/contracts/product/IClaimService.sol +136 -0
  437. package/contracts/product/IPolicyService.sol +102 -0
  438. package/contracts/product/IPricingService.sol +40 -0
  439. package/contracts/product/IProductComponent.sol +62 -0
  440. package/contracts/product/IRiskService.sol +48 -0
  441. package/contracts/product/PolicyService.sol +645 -0
  442. package/contracts/product/PolicyServiceLib.sol +139 -0
  443. package/contracts/product/PolicyServiceManager.sol +39 -0
  444. package/contracts/product/PricingService.sol +306 -0
  445. package/contracts/product/PricingServiceManager.sol +39 -0
  446. package/contracts/product/Product.sol +493 -0
  447. package/contracts/product/RiskService.sol +190 -0
  448. package/contracts/product/RiskServiceManager.sol +39 -0
  449. package/contracts/registry/ChainNft.sol +79 -40
  450. package/contracts/registry/IRegistry.sol +104 -30
  451. package/contracts/registry/IRegistryService.sol +34 -40
  452. package/contracts/registry/IRelease.sol +29 -0
  453. package/contracts/registry/ITransferInterceptor.sol +1 -2
  454. package/contracts/registry/Registry.sol +466 -197
  455. package/contracts/registry/RegistryAdmin.sol +188 -0
  456. package/contracts/registry/RegistryAuthorization.sol +284 -0
  457. package/contracts/registry/RegistryService.sol +90 -131
  458. package/contracts/registry/RegistryServiceManager.sol +23 -32
  459. package/contracts/registry/ReleaseAdmin.sol +195 -0
  460. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  461. package/contracts/registry/ReleaseRegistry.sol +520 -0
  462. package/contracts/registry/ServiceAuthorizationV3.sol +345 -0
  463. package/contracts/registry/TokenRegistry.sol +263 -65
  464. package/contracts/shared/Component.sol +210 -0
  465. package/contracts/shared/ComponentService.sol +679 -0
  466. package/contracts/shared/ComponentServiceManager.sol +38 -0
  467. package/contracts/shared/ContractLib.sol +311 -0
  468. package/contracts/shared/IComponent.sol +58 -0
  469. package/contracts/shared/IComponentService.sol +111 -0
  470. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  471. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  472. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  473. package/contracts/shared/INftOwnable.sol +6 -2
  474. package/contracts/shared/IPolicyHolder.sol +23 -14
  475. package/contracts/shared/IRegisterable.sol +22 -1
  476. package/contracts/shared/IRegistryLinked.sol +0 -1
  477. package/contracts/shared/IService.sol +12 -5
  478. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  479. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  480. package/contracts/shared/KeyValueStore.sol +131 -0
  481. package/contracts/shared/Lifecycle.sol +88 -0
  482. package/contracts/shared/NftIdSet.sol +65 -0
  483. package/contracts/shared/NftOwnable.sol +36 -27
  484. package/contracts/shared/PolicyHolder.sol +23 -41
  485. package/contracts/shared/Registerable.sol +52 -20
  486. package/contracts/shared/RegistryLinked.sol +9 -19
  487. package/contracts/shared/Service.sol +36 -41
  488. package/contracts/shared/TokenHandler.sol +322 -13
  489. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  490. package/contracts/staking/IStaking.sol +195 -0
  491. package/contracts/staking/IStakingService.sol +170 -0
  492. package/contracts/staking/Staking.sol +605 -0
  493. package/contracts/staking/StakingLib.sol +281 -0
  494. package/contracts/staking/StakingLifecycle.sol +23 -0
  495. package/contracts/staking/StakingManager.sol +52 -0
  496. package/contracts/staking/StakingReader.sol +199 -0
  497. package/contracts/staking/StakingService.sol +468 -0
  498. package/contracts/staking/StakingServiceManager.sol +45 -0
  499. package/contracts/staking/StakingStore.sol +606 -0
  500. package/contracts/staking/TargetManagerLib.sol +211 -0
  501. package/contracts/{types → type}/AddressSet.sol +1 -1
  502. package/contracts/type/Amount.sol +150 -0
  503. package/contracts/{types → type}/Blocknumber.sol +26 -3
  504. package/contracts/{types → type}/ClaimId.sol +6 -1
  505. package/contracts/{types → type}/Fee.sol +28 -26
  506. package/contracts/{types → type}/Key32.sol +2 -2
  507. package/contracts/type/Key32Set.sol +62 -0
  508. package/contracts/{types → type}/NftId.sol +21 -16
  509. package/contracts/{types → type}/NftIdSet.sol +2 -2
  510. package/contracts/type/ObjectType.sol +307 -0
  511. package/contracts/{types → type}/PayoutId.sol +10 -10
  512. package/contracts/{types → type}/Referral.sol +2 -1
  513. package/contracts/type/RequestId.sol +75 -0
  514. package/contracts/type/RiskId.sol +75 -0
  515. package/contracts/type/RoleId.sol +180 -0
  516. package/contracts/type/Seconds.sol +105 -0
  517. package/contracts/type/Selector.sol +107 -0
  518. package/contracts/{types → type}/StateId.sol +41 -2
  519. package/contracts/type/String.sol +65 -0
  520. package/contracts/{types → type}/Timestamp.sol +16 -7
  521. package/contracts/type/UFixed.sol +262 -0
  522. package/contracts/{types → type}/Version.sol +58 -7
  523. package/contracts/{shared → upgradeability}/IVersionable.sol +4 -1
  524. package/contracts/{shared → upgradeability}/ProxyManager.sol +118 -41
  525. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +8 -4
  526. package/contracts/{shared → upgradeability}/Versionable.sol +9 -6
  527. package/package.json +12 -8
  528. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  529. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  530. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  531. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  532. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  533. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  534. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  535. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  536. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  537. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  538. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  539. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  540. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  541. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  542. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  543. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  544. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  545. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  546. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  547. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  548. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  549. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  550. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  551. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  552. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  554. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  555. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  556. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  557. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  558. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1060
  559. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  560. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -681
  561. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  562. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1289
  563. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  564. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -725
  565. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  566. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -1040
  567. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  568. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -685
  569. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  570. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1774
  571. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -793
  573. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  575. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  578. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  580. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +0 -450
  581. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  582. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1615
  583. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  584. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -777
  585. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  586. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1433
  587. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  588. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -701
  589. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  591. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  592. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  593. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  594. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  595. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  596. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  597. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  598. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  599. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  600. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  601. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  602. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  603. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  604. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  605. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  606. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  607. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  608. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  609. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  610. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  611. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  612. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  613. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  614. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  615. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  616. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  617. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  618. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  619. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  620. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  621. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  622. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  623. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  624. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  625. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -209
  627. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  628. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  629. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  631. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  632. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -179
  633. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  634. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  635. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  636. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  637. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  638. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  639. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  640. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  641. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  642. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  643. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  644. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  645. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  646. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  647. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -209
  649. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  650. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  651. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  652. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  653. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  654. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  655. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  656. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  657. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  658. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  659. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  660. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  662. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  664. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  665. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  666. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  668. package/contracts/components/Component.sol +0 -253
  669. package/contracts/components/Distribution.sol +0 -284
  670. package/contracts/components/IComponent.sol +0 -76
  671. package/contracts/components/IDistributionComponent.sol +0 -71
  672. package/contracts/components/IPoolComponent.sol +0 -113
  673. package/contracts/components/IProductComponent.sol +0 -40
  674. package/contracts/components/Pool.sol +0 -302
  675. package/contracts/components/Product.sol +0 -371
  676. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  677. package/contracts/instance/BundleManager.sol +0 -126
  678. package/contracts/instance/Cloneable.sol +0 -51
  679. package/contracts/instance/InstanceAccessManager.sol +0 -527
  680. package/contracts/instance/ObjectManager.sol +0 -82
  681. package/contracts/instance/base/ComponentService.sol +0 -121
  682. package/contracts/instance/base/KeyValueStore.sol +0 -180
  683. package/contracts/instance/base/Lifecycle.sol +0 -117
  684. package/contracts/instance/module/IAccess.sol +0 -54
  685. package/contracts/instance/module/ISetup.sol +0 -33
  686. package/contracts/instance/module/ITreasury.sol +0 -23
  687. package/contracts/instance/service/ApplicationService.sol +0 -355
  688. package/contracts/instance/service/BundleService.sol +0 -443
  689. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  690. package/contracts/instance/service/ClaimService.sol +0 -239
  691. package/contracts/instance/service/DistributionService.sol +0 -431
  692. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  693. package/contracts/instance/service/IBundleService.sol +0 -102
  694. package/contracts/instance/service/IClaimService.sol +0 -92
  695. package/contracts/instance/service/IDistributionService.sol +0 -99
  696. package/contracts/instance/service/IPolicyService.sol +0 -139
  697. package/contracts/instance/service/IPoolService.sol +0 -102
  698. package/contracts/instance/service/IProductService.sol +0 -40
  699. package/contracts/instance/service/PolicyService.sol +0 -575
  700. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  701. package/contracts/instance/service/PoolService.sol +0 -336
  702. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  703. package/contracts/instance/service/ProductService.sol +0 -210
  704. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  705. package/contracts/registry/RegistryAccessManager.sol +0 -216
  706. package/contracts/registry/ReleaseManager.sol +0 -324
  707. package/contracts/shared/ContractDeployerLib.sol +0 -72
  708. package/contracts/test/TestFee.sol +0 -25
  709. package/contracts/test/TestRegisterable.sol +0 -18
  710. package/contracts/test/TestRoleId.sol +0 -14
  711. package/contracts/test/TestService.sol +0 -25
  712. package/contracts/test/TestToken.sol +0 -26
  713. package/contracts/test/TestVersion.sol +0 -44
  714. package/contracts/test/TestVersionable.sol +0 -17
  715. package/contracts/types/Amount.sol +0 -70
  716. package/contracts/types/ChainId.sol +0 -38
  717. package/contracts/types/NumberId.sol +0 -52
  718. package/contracts/types/ObjectType.sol +0 -157
  719. package/contracts/types/RiskId.sol +0 -43
  720. package/contracts/types/RoleId.sol +0 -97
  721. package/contracts/types/Seconds.sol +0 -54
  722. package/contracts/types/UFixed.sol +0 -326
  723. /package/contracts/{types → type}/DistributorType.sol +0 -0
@@ -2,366 +2,373 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
- import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
5
 
7
- import {Instance} from "./Instance.sol";
6
+ import {IAccess} from "../authorization/IAccess.sol";
7
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
8
+ import {IComponentService} from "../shared/IComponentService.sol";
8
9
  import {IInstance} from "./IInstance.sol";
9
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
10
10
  import {IInstanceService} from "./IInstanceService.sol";
11
- import {InstanceReader} from "./InstanceReader.sol";
12
- import {BundleManager} from "./BundleManager.sol";
13
- import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
14
11
  import {IRegistry} from "../registry/IRegistry.sol";
15
12
  import {IRegistryService} from "../registry/IRegistryService.sol";
16
- import {Service} from "../../contracts/shared/Service.sol";
17
- import {NftId} from "../../contracts/types/NftId.sol";
18
- import {RoleId} from "../types/RoleId.sol";
19
- import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../types/RoleId.sol";
20
- import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
13
+ import {IStakingService} from "../staking/IStakingService.sol";
14
+
15
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
16
+ import {Amount} from "../type/Amount.sol";
17
+ import {BundleSet} from "./BundleSet.sol";
18
+ import {Instance} from "./Instance.sol";
19
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
20
+ import {InstanceReader} from "./InstanceReader.sol";
21
+ import {InstanceStore} from "./InstanceStore.sol";
22
+ import {NftId} from "../type/NftId.sol";
23
+ import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
24
+ import {RiskSet} from "./RiskSet.sol";
25
+ import {RoleId} from "../type/RoleId.sol";
26
+ import {Seconds} from "../type/Seconds.sol";
27
+ import {Service} from "../shared/Service.sol";
28
+ import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
29
+ import {UFixed} from "../type/UFixed.sol";
30
+ import {VersionPart} from "../type/Version.sol";
31
+
21
32
 
22
33
  contract InstanceService is
23
34
  Service,
24
35
  IInstanceService
25
36
  {
26
- address internal _masterOzAccessManager;
27
- address internal _masterInstanceAccessManager;
28
- address internal _masterInstance;
29
- address internal _masterInstanceReader;
30
- address internal _masterInstanceBundleManager;
31
37
 
32
38
  // TODO update to real hash when instance is stable
33
39
  bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
34
40
 
35
- modifier onlyInstanceOwner(NftId instanceNftId) {
36
- if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
37
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
38
- }
39
- _;
40
- }
41
- // TODO check service domain?
42
- // TODO check release version?
43
- modifier onlyRegisteredService() {
44
- if (! getRegistry().isRegisteredService(msg.sender)) {
45
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
46
- }
47
- _;
48
- }
49
- // TODO check release version?
50
- modifier onlyComponent() {
51
- if (! getRegistry().isRegisteredComponent(msg.sender)) {
52
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
53
- }
41
+ IRegistryService internal _registryService;
42
+ IStakingService internal _stakingService;
43
+ IComponentService internal _componentService;
44
+
45
+ address internal _masterAccessManager;
46
+ address internal _masterInstanceAdmin;
47
+ address internal _masterInstance;
48
+ address internal _masterInstanceReader;
49
+ address internal _masterInstanceBundleSet;
50
+ address internal _masterInstanceRiskSet;
51
+ address internal _masterInstanceStore;
52
+
53
+
54
+ modifier onlyInstance() {
55
+ _checkInstance(msg.sender, getRelease());
54
56
  _;
55
57
  }
56
58
 
57
- function createInstanceClone()
58
- external
59
- returns (
60
- AccessManagerUpgradeableInitializeable clonedOzAccessManager,
61
- InstanceAccessManager clonedInstanceAccessManager,
62
- Instance clonedInstance,
63
- NftId clonedInstanceNftId,
64
- InstanceReader clonedInstanceReader,
65
- BundleManager clonedBundleManager
66
- )
59
+
60
+ /// @inheritdoc IInstanceService
61
+ function createRole(
62
+ string memory roleName,
63
+ RoleId adminRoleId,
64
+ uint32 maxMemberCount
65
+ )
66
+ external
67
+ restricted()
68
+ onlyInstance()
69
+ returns (RoleId roleId)
67
70
  {
68
- address instanceOwner = msg.sender;
69
- IRegistry registry = getRegistry();
70
- IRegistryService registryService = IRegistryService(
71
- registry.getServiceAddress(
72
- REGISTRY(), getVersion().toMajorPart()));
71
+ IInstance instance = IInstance(msg.sender);
72
+ roleId = instance.getInstanceAdmin().createRole(
73
+ roleName,
74
+ adminRoleId,
75
+ maxMemberCount);
76
+ }
73
77
 
74
- clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
75
- Clones.clone(_masterOzAccessManager));
76
78
 
77
- // initially grants ADMIN_ROLE to this (being the instance service).
78
- // This will allow the instance service to bootstrap the authorizations of the instance.
79
- // Instance service will not use oz access manager directlly but through instance access manager instead
80
- // Instance service will renounce ADMIN_ROLE when bootstraping is finished
81
- clonedOzAccessManager.initialize(address(this));
79
+ /// @inheritdoc IInstanceService
80
+ function setRoleActive(RoleId roleId, bool active)
81
+ external
82
+ restricted()
83
+ onlyInstance()
84
+ {
85
+ IInstance instance = IInstance(msg.sender);
86
+ instance.getInstanceAdmin().setRoleActive(roleId, active);
87
+ }
82
88
 
83
- clonedInstance = Instance(Clones.clone(_masterInstance));
84
- clonedInstance.initialize(
85
- address(clonedOzAccessManager),
86
- address(registry),
87
- instanceOwner);
88
-
89
- clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
90
- clonedInstanceReader.initialize(address(clonedInstance));
91
- clonedInstance.setInstanceReader(clonedInstanceReader);
92
89
 
93
- clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
94
- clonedBundleManager.initialize(address(clonedInstance));
95
- clonedInstance.setBundleManager(clonedBundleManager);
90
+ /// @inheritdoc IInstanceService
91
+ function grantRole(RoleId roleId, address account)
92
+ external
93
+ restricted()
94
+ onlyInstance()
95
+ {
96
+ IInstance instance = IInstance(msg.sender);
97
+ instance.getInstanceAdmin().grantRole(roleId, account);
98
+ }
96
99
 
97
- clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
98
- clonedOzAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAccessManager), 0);
99
- clonedInstanceAccessManager.initialize(address(clonedInstance));
100
- clonedInstance.setInstanceAccessManager(clonedInstanceAccessManager);
101
100
 
102
- // TODO amend setters with instance specific , policy manager ...
101
+ /// @inheritdoc IInstanceService
102
+ function revokeRole(RoleId roleId, address account)
103
+ external
104
+ restricted()
105
+ onlyInstance()
106
+ {
107
+ IInstance instance = IInstance(msg.sender);
108
+ instance.getInstanceAdmin().revokeRole(roleId, account);
109
+ }
103
110
 
104
- _grantInitialAuthorizations(clonedInstanceAccessManager, clonedInstance, clonedBundleManager, instanceOwner);
105
111
 
106
- clonedOzAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
112
+ /// @inheritdoc IInstanceService
113
+ function createTarget(address target, string memory name)
114
+ external
115
+ restricted()
116
+ onlyInstance()
117
+ returns (RoleId contractRoleId)
118
+ {
119
+ IInstance instance = IInstance(msg.sender);
120
+ return instance.getInstanceAdmin().createTarget(target, name);
121
+ }
107
122
 
108
- IRegistry.ObjectInfo memory info = registryService.registerInstance(clonedInstance, instanceOwner);
109
- clonedInstanceNftId = info.nftId;
110
123
 
111
- emit LogInstanceCloned(
112
- address(clonedOzAccessManager),
113
- address(clonedInstanceAccessManager),
114
- address(clonedInstance),
115
- address(clonedBundleManager),
116
- address(clonedInstanceReader),
117
- clonedInstanceNftId);
124
+ /// @inheritdoc IInstanceService
125
+ function authorizeFunctions(
126
+ address target,
127
+ RoleId roleId,
128
+ IAccess.FunctionInfo[] memory functions
129
+ )
130
+ external
131
+ restricted()
132
+ onlyInstance()
133
+ {
134
+ IInstance instance = IInstance(msg.sender);
135
+ return instance.getInstanceAdmin().authorizeFunctions(target, roleId, functions);
118
136
  }
119
137
 
120
- function _grantInitialAuthorizations(
121
- InstanceAccessManager clonedAccessManager,
122
- Instance clonedInstance,
123
- BundleManager clonedBundleManager,
124
- address instanceOwner)
125
- internal
138
+
139
+ /// @inheritdoc IInstanceService
140
+ function unauthorizeFunctions(
141
+ address target,
142
+ IAccess.FunctionInfo[] memory functions
143
+ )
144
+ external
145
+ restricted()
146
+ onlyInstance()
126
147
  {
127
- _createCoreAndGifRoles(clonedAccessManager);
128
- _createCoreTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
129
- _grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
130
- _grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
131
- _grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
132
- _grantApplicationServiceAuthorizations(clonedAccessManager, clonedInstance);
133
- _grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
134
- _grantClaimServiceAuthorizations(clonedAccessManager, clonedInstance);
135
- _grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
136
- _grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
137
- _grantInstanceOwnerAuthorizations(clonedAccessManager, instanceOwner);
148
+ IInstance instance = IInstance(msg.sender);
149
+ return instance.getInstanceAdmin().unauthorizeFunctions(target, functions);
138
150
  }
139
151
 
140
- function _createCoreAndGifRoles(InstanceAccessManager clonedAccessManager) internal {
141
- // default roles controlled by ADMIN_ROLE -> core roles
142
- // all set/granted only once during cloning (the only exception is INSTANCE_OWNER_ROLE, hooked to instance nft)
143
- clonedAccessManager.createCoreRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
144
- clonedAccessManager.createCoreRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
145
- clonedAccessManager.createCoreRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
146
- clonedAccessManager.createCoreRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
147
- clonedAccessManager.createCoreRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
148
- clonedAccessManager.createCoreRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
149
- clonedAccessManager.createCoreRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
150
- clonedAccessManager.createCoreRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
151
- // default roles controlled by INSTANCE_OWNER_ROLE -> gif roles
152
- clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole", INSTANCE_OWNER_ROLE());
153
- clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole", INSTANCE_OWNER_ROLE());
154
- clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole", INSTANCE_OWNER_ROLE());
155
- }
156
152
 
157
- function _createCoreTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
158
- clonedAccessManager.createCoreTarget(address(clonedAccessManager), "InstanceAccessManager");
159
- clonedAccessManager.createCoreTarget(address(clonedInstance), "Instance");
160
- clonedAccessManager.createCoreTarget(address(clonedBundleManager), "BundleManager");
161
- }
162
-
163
- function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
164
- // configure authorization for distribution service on instance
165
- address distributionServiceAddress = getRegistry().getServiceAddress(DISTRIBUTION(), getVersion().toMajorPart());
166
- clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
167
- bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
168
- instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
169
- instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
170
- instanceDistributionServiceSelectors[2] = clonedInstance.createDistributorType.selector;
171
- instanceDistributionServiceSelectors[3] = clonedInstance.updateDistributorType.selector;
172
- instanceDistributionServiceSelectors[4] = clonedInstance.updateDistributorTypeState.selector;
173
- instanceDistributionServiceSelectors[5] = clonedInstance.createDistributor.selector;
174
- instanceDistributionServiceSelectors[6] = clonedInstance.updateDistributor.selector;
175
- instanceDistributionServiceSelectors[7] = clonedInstance.updateDistributorState.selector;
176
- instanceDistributionServiceSelectors[8] = clonedInstance.createReferral.selector;
177
- instanceDistributionServiceSelectors[9] = clonedInstance.updateReferral.selector;
178
- instanceDistributionServiceSelectors[10] = clonedInstance.updateReferralState.selector;
179
- clonedAccessManager.setCoreTargetFunctionRole(
180
- "Instance",
181
- instanceDistributionServiceSelectors,
182
- DISTRIBUTION_SERVICE_ROLE());
153
+ /// @inheritdoc IInstanceService
154
+ function setTargetLocked(address target, bool locked)
155
+ external
156
+ virtual
157
+ restricted()
158
+ onlyInstance()
159
+ {
160
+ address instanceAddress = msg.sender;
161
+ IInstance(instanceAddress).getInstanceAdmin().setTargetLocked(target, locked);
183
162
  }
184
163
 
185
- function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
186
- // configure authorization for pool service on instance
187
- address poolServiceAddress = getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart());
188
- clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
189
- bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
190
- instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
191
- instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
192
- clonedAccessManager.setCoreTargetFunctionRole(
193
- "Instance",
194
- instancePoolServiceSelectors,
195
- POOL_SERVICE_ROLE());
196
- }
197
164
 
198
- function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
199
- // configure authorization for product service on instance
200
- address productServiceAddress = getRegistry().getServiceAddress(PRODUCT(), getVersion().toMajorPart());
201
- clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
202
- bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
203
- instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
204
- instanceProductServiceSelectors[1] = clonedInstance.updateProductSetup.selector;
205
- instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
206
- instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
207
- instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
208
- clonedAccessManager.setCoreTargetFunctionRole(
209
- "Instance",
210
- instanceProductServiceSelectors,
211
- PRODUCT_SERVICE_ROLE());
165
+ /// @inheritdoc IInstanceService
166
+ function setInstanceLocked(bool locked)
167
+ external
168
+ virtual
169
+ restricted()
170
+ onlyInstance()
171
+ {
172
+ address instanceAddress = msg.sender;
173
+ IInstance(instanceAddress).getInstanceAdmin().setInstanceLocked(locked);
174
+
175
+ emit LogInstanceServiceInstanceLocked(
176
+ getRegistry().getNftIdForAddress(instanceAddress),
177
+ locked);
212
178
  }
213
179
 
214
- function _grantApplicationServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
215
- // configure authorization for application services on instance
216
- address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getVersion().toMajorPart());
217
- clonedAccessManager.grantRole(APPLICATION_SERVICE_ROLE(), applicationServiceAddress);
218
- bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
219
- instanceApplicationServiceSelectors[0] = clonedInstance.createApplication.selector;
220
- instanceApplicationServiceSelectors[1] = clonedInstance.updateApplication.selector;
221
- instanceApplicationServiceSelectors[2] = clonedInstance.updateApplicationState.selector;
222
- clonedAccessManager.setCoreTargetFunctionRole(
223
- "Instance",
224
- instanceApplicationServiceSelectors,
225
- APPLICATION_SERVICE_ROLE());
180
+
181
+ /// @inheritdoc IInstanceService
182
+ function createInstance(bool allowAnyToken)
183
+ external
184
+ virtual
185
+ restricted()
186
+ returns (
187
+ IInstance instance,
188
+ NftId instanceNftId
189
+ )
190
+ {
191
+ // tx sender will become instance owner
192
+ address instanceOwner = msg.sender;
193
+
194
+ // create instance admin and instance
195
+ InstanceAdmin instanceAdmin = _cloneNewInstanceAdmin();
196
+ instance = _createInstance(instanceAdmin, instanceOwner, allowAnyToken);
197
+
198
+ // register cloned instance with registry
199
+ instanceNftId = _registryService.registerInstance(
200
+ instance, instanceOwner).nftId;
201
+
202
+ // MUST be set after instance is set up and registered
203
+ IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
204
+ instanceAdmin.completeSetup(
205
+ address(getRegistry()),
206
+ address(instanceAuthorization),
207
+ getRelease(),
208
+ address(instance));
209
+
210
+ // hard checks for newly cloned instance
211
+ assert(address(instance.getRegistry()) == address(getRegistry()));
212
+ assert(instance.getRelease() == getRelease());
213
+
214
+ // register cloned instance as staking target
215
+ _stakingService.createInstanceTarget(
216
+ instanceNftId,
217
+ TargetManagerLib.getDefaultLockingPeriod(),
218
+ TargetManagerLib.getDefaultRewardRate());
219
+
220
+ emit LogInstanceServiceInstanceCreated(
221
+ instanceNftId,
222
+ address(instance));
226
223
  }
227
224
 
228
- function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
229
- // configure authorization for policy services on instance
230
- address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart());
231
- clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), policyServiceAddress);
232
- bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
233
- instancePolicyServiceSelectors[0] = clonedInstance.updatePolicy.selector;
234
- instancePolicyServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
235
- clonedAccessManager.setCoreTargetFunctionRole(
236
- "Instance",
237
- instancePolicyServiceSelectors,
238
- POLICY_SERVICE_ROLE());
225
+
226
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod)
227
+ external
228
+ virtual
229
+ restricted()
230
+ onlyInstance()
231
+ {
232
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
233
+ _stakingService.setInstanceLockingPeriod(
234
+ instanceNftId,
235
+ stakeLockingPeriod);
239
236
  }
240
237
 
241
- function _grantClaimServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
242
- // configure authorization for claim/payout services on instance
243
- address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getVersion().toMajorPart());
244
- clonedAccessManager.grantRole(CLAIM_SERVICE_ROLE(), claimServiceAddress);
245
- bytes4[] memory instanceClaimServiceSelectors = new bytes4[](4);
246
- instanceClaimServiceSelectors[0] = clonedInstance.createClaim.selector;
247
- instanceClaimServiceSelectors[1] = clonedInstance.updateClaim.selector;
248
- instanceClaimServiceSelectors[2] = clonedInstance.createPayout.selector;
249
- instanceClaimServiceSelectors[3] = clonedInstance.updatePayout.selector;
250
- clonedAccessManager.setCoreTargetFunctionRole(
251
- "Instance",
252
- instanceClaimServiceSelectors,
253
- CLAIM_SERVICE_ROLE());
238
+
239
+ function setStakingRewardRate(UFixed rewardRate)
240
+ external
241
+ virtual
242
+ restricted()
243
+ onlyInstance()
244
+ {
245
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
246
+ _stakingService.setInstanceRewardRate(
247
+ instanceNftId,
248
+ rewardRate);
254
249
  }
255
250
 
256
- function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
257
- // configure authorization for bundle service on instance
258
- address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getVersion().toMajorPart());
259
- clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
260
- bytes4[] memory instanceBundleServiceSelectors = new bytes4[](3);
261
- instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
262
- instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
263
- instanceBundleServiceSelectors[2] = clonedInstance.updateBundleState.selector;
264
- clonedAccessManager.setCoreTargetFunctionRole(
265
- "Instance",
266
- instanceBundleServiceSelectors,
267
- BUNDLE_SERVICE_ROLE());
268
-
269
- // configure authorization for bundle service on bundle manager
270
- bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
271
- bundleManagerBundleServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
272
- bundleManagerBundleServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
273
- bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
274
- bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
275
- bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
276
- clonedAccessManager.setCoreTargetFunctionRole(
277
- "BundleManager",
278
- bundleManagerBundleServiceSelectors,
279
- BUNDLE_SERVICE_ROLE());
251
+ function setStakingMaxAmount(Amount maxStakedAmount)
252
+ external
253
+ virtual
254
+ restricted()
255
+ onlyInstance()
256
+ {
257
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
258
+ _stakingService.setInstanceMaxStakedAmount(
259
+ instanceNftId,
260
+ maxStakedAmount);
261
+ }
262
+
263
+
264
+ function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
265
+ external
266
+ virtual
267
+ restricted()
268
+ onlyInstance()
269
+ {
270
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
271
+ _stakingService.refillInstanceRewardReserves(
272
+ instanceNftId,
273
+ rewardProvider,
274
+ dipAmount);
280
275
  }
281
276
 
282
- function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
283
- // configure authorization for instance service on instance
284
- address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getVersion().toMajorPart());
285
- clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
286
- bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
287
- instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
288
- clonedAccessManager.setCoreTargetFunctionRole(
289
- "Instance",
290
- instanceInstanceServiceSelectors,
291
- INSTANCE_SERVICE_ROLE());
292
-
293
- // configure authorizations for instance service on instance access manager
294
- bytes4[] memory accessManagerInstanceServiceSelectors = new bytes4[](3);
295
- accessManagerInstanceServiceSelectors[0] = clonedAccessManager.createGifTarget.selector;
296
- accessManagerInstanceServiceSelectors[1] = clonedAccessManager.setTargetLocked.selector;
297
- accessManagerInstanceServiceSelectors[2] = clonedAccessManager.setCoreTargetFunctionRole.selector;
298
- clonedAccessManager.setCoreTargetFunctionRole(
299
- "InstanceAccessManager",
300
- accessManagerInstanceServiceSelectors,
301
- INSTANCE_SERVICE_ROLE());
277
+
278
+ function withdrawStakingRewardReserves(Amount dipAmount)
279
+ external
280
+ virtual
281
+ restricted()
282
+ onlyInstance()
283
+ returns (Amount newBalance)
284
+ {
285
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
286
+ newBalance = _stakingService.withdrawInstanceRewardReserves(
287
+ instanceNftId,
288
+ dipAmount);
302
289
  }
303
290
 
304
- function _grantInstanceOwnerAuthorizations(InstanceAccessManager clonedAccessManager, address instanceOwner) internal {
305
- // configure authorization for instance owner on instance access manager
306
- // instance owner role is granted/revoked ONLY by INSTANCE_ROLE
307
- bytes4[] memory accessManagerInstanceOwnerSelectors = new bytes4[](3);
308
- accessManagerInstanceOwnerSelectors[0] = clonedAccessManager.createRole.selector;
309
- accessManagerInstanceOwnerSelectors[1] = clonedAccessManager.createTarget.selector;
310
- accessManagerInstanceOwnerSelectors[2] = clonedAccessManager.setTargetFunctionRole.selector;
311
- clonedAccessManager.setCoreTargetFunctionRole(
312
- "InstanceAccessManager",
313
- accessManagerInstanceOwnerSelectors,
314
- INSTANCE_OWNER_ROLE());
291
+
292
+ function upgradeInstanceReader()
293
+ external
294
+ virtual
295
+ restricted()
296
+ onlyInstance()
297
+ {
298
+ address instanceAddress = msg.sender;
299
+ IInstance instance = IInstance(msg.sender);
300
+
301
+ InstanceReader upgradedInstanceReaderClone = InstanceReader(
302
+ Clones.clone(address(_masterInstanceReader)));
303
+
304
+ upgradedInstanceReaderClone.initializeWithInstance(instanceAddress);
305
+ instance.setInstanceReader(upgradedInstanceReaderClone);
306
+
307
+ emit LogInstanceServiceInstanceReaderUpgraded(
308
+ getRegistry().getNftIdForAddress(instanceAddress),
309
+ address(upgradedInstanceReaderClone));
315
310
  }
316
311
 
317
312
 
318
- function setAndRegisterMasterInstance(address instanceAddress)
319
- external
320
- onlyOwner
321
- returns(NftId masterInstanceNftId)
313
+ function setAndRegisterMasterInstance(address instanceAddress)
314
+ external
315
+ virtual
316
+ onlyOwner()
317
+ returns(NftId masterInstanceNftId)
322
318
  {
323
319
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
324
- if(_masterOzAccessManager != address(0)) { revert ErrorInstanceServiceMasterOzAccessManagerAlreadySet(); }
325
- if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
326
- if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
327
-
320
+ if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
321
+ if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
322
+ if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
328
323
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
329
324
 
330
325
  IInstance instance = IInstance(instanceAddress);
331
- AccessManagerUpgradeableInitializeable ozAccessManager = AccessManagerUpgradeableInitializeable(instance.authority());
332
- address ozAccessManagerAddress = address(ozAccessManager);
333
- InstanceAccessManager instanceAccessManager = instance.getInstanceAccessManager();
334
- address instanceAccessManagerAddress = address(instanceAccessManager);
326
+ address accessManagerAddress = instance.authority();
327
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
328
+ address instanceAdminAddress = address(instanceAdmin);
335
329
  InstanceReader instanceReader = instance.getInstanceReader();
336
330
  address instanceReaderAddress = address(instanceReader);
337
- BundleManager bundleManager = instance.getBundleManager();
338
- address bundleManagerAddress = address(bundleManager);
339
-
340
- if(ozAccessManagerAddress == address(0)) { revert ErrorInstanceServiceOzAccessManagerZero();}
341
- if(instanceAccessManagerAddress == address(0)) { revert ErrorInstanceServiceInstanceAccessManagerZero(); }
331
+ BundleSet bundleSet = instance.getBundleSet();
332
+ address bundleSetAddress = address(bundleSet);
333
+ RiskSet riskSet = instance.getRiskSet();
334
+ address riskSetAddress = address(riskSet);
335
+ InstanceStore instanceStore = instance.getInstanceStore();
336
+ address instanceStoreAddress = address(instanceStore);
337
+
338
+ if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
339
+ if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
342
340
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
343
- if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
341
+ if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
342
+ if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
343
+ if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
344
344
 
345
- if(instance.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
346
- if(bundleManager.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
345
+ if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
346
+ if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
347
+ if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
348
+ if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
349
+ if(bundleSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
350
+ if(riskSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
347
351
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
348
- if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
349
352
 
350
- _masterOzAccessManager = ozAccessManagerAddress;
351
- _masterInstanceAccessManager = instanceAccessManagerAddress;
353
+ _masterAccessManager = accessManagerAddress;
354
+ _masterInstanceAdmin = instanceAdminAddress;
352
355
  _masterInstance = instanceAddress;
353
356
  _masterInstanceReader = instanceReaderAddress;
354
- _masterInstanceBundleManager = bundleManagerAddress;
357
+ _masterInstanceBundleSet = bundleSetAddress;
358
+ _masterInstanceRiskSet = riskSetAddress;
359
+ _masterInstanceStore = instanceStoreAddress;
355
360
 
356
- IRegistryService registryService = IRegistryService(getRegistry().getServiceAddress(REGISTRY(), getVersion().toMajorPart()));
357
361
  IInstance masterInstance = IInstance(_masterInstance);
358
- IRegistry.ObjectInfo memory info = registryService.registerInstance(masterInstance, getOwner());
362
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
359
363
  masterInstanceNftId = info.nftId;
360
-
361
- // masterInstance.linkToRegisteredNftId();
362
364
  }
363
365
 
364
- function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
366
+
367
+ function upgradeMasterInstanceReader(address instanceReaderAddress)
368
+ external
369
+ virtual
370
+ onlyOwner
371
+ {
365
372
  if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
366
373
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
367
374
  if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
@@ -370,109 +377,123 @@ contract InstanceService is
370
377
  if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
371
378
 
372
379
  _masterInstanceReader = instanceReaderAddress;
380
+
381
+ emit LogInstanceServiceMasterInstanceReaderUpgraded(
382
+ getRegistry().getNftIdForAddress(_masterInstance),
383
+ instanceReaderAddress);
373
384
  }
374
385
 
375
- function upgradeInstanceReader(NftId instanceNftId)
376
- external
377
- onlyInstanceOwner(instanceNftId)
386
+ function getMasterInstanceReader() external virtual view returns (address) {
387
+ return _masterInstanceReader;
388
+ }
389
+
390
+ //--- internal functions --------------------------------------------------------//
391
+
392
+ /// @dev create new cloned instance admin
393
+ /// function used to setup a new instance
394
+ function _cloneNewInstanceAdmin()
395
+ internal
396
+ virtual
397
+ returns (InstanceAdmin clonedAdmin)
378
398
  {
379
- IRegistry registry = getRegistry();
380
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
381
- Instance instance = Instance(instanceInfo.objectAddress);
399
+ // clone instance specific access manager
400
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
401
+ Clones.clone(
402
+ InstanceAdmin(_masterInstanceAdmin).authority()));
382
403
 
383
- InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
384
- upgradedInstanceReaderClone.initialize(address(instance));
385
- instance.setInstanceReader(upgradedInstanceReaderClone);
386
- }
404
+ // set up the instance admin
405
+ clonedAdmin = InstanceAdmin(
406
+ Clones.clone(_masterInstanceAdmin));
387
407
 
388
- function getMasterInstanceReader() external view returns (address) {
389
- return _masterInstanceReader;
408
+ clonedAdmin.initialize(
409
+ address(clonedAccessManager),
410
+ "InstanceAdmin");
390
411
  }
391
412
 
392
- // From IService
393
- function getDomain() public pure override returns(ObjectType) {
394
- return INSTANCE();
413
+
414
+ /// @dev create new cloned instance
415
+ /// function used to setup a new instance
416
+ function _createInstance(
417
+ InstanceAdmin instanceAdmin,
418
+ address instanceOwner,
419
+ bool allowAnyToken
420
+ )
421
+ internal
422
+ virtual
423
+ returns (IInstance)
424
+ {
425
+ // clone instance
426
+ Instance clonedInstance = Instance(Clones.clone(_masterInstance));
427
+ clonedInstance.initialize(
428
+ instanceAdmin,
429
+ InstanceStore(Clones.clone(address(_masterInstanceStore))),
430
+ BundleSet(Clones.clone(_masterInstanceBundleSet)),
431
+ RiskSet(Clones.clone(_masterInstanceRiskSet)),
432
+ InstanceReader(Clones.clone(address(_masterInstanceReader))),
433
+ getRegistry(),
434
+ getRelease(),
435
+ instanceOwner,
436
+ allowAnyToken);
437
+
438
+ return clonedInstance;
395
439
  }
396
-
397
- /// @dev top level initializer
440
+
441
+
442
+ /// @dev top level initializer (upgradable contract)
398
443
  function _initialize(
399
444
  address owner,
400
445
  bytes memory data
401
446
  )
402
447
  internal
403
- initializer
404
448
  virtual override
405
- {
406
- address initialOwner;
407
- address registryAddress;
408
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
409
- // TODO while InstanceService is not deployed in InstanceServiceManager constructor
410
- // owner is InstanceServiceManager deployer
411
- initializeService(registryAddress, address(0), owner);
412
- registerInterface(type(IInstanceService).interfaceId);
413
- }
414
-
415
- // all gif targets MUST be childs of instanceNftId
416
- function createGifTarget(
417
- NftId instanceNftId,
418
- address targetAddress,
419
- string memory targetName,
420
- bytes4[][] memory selectors,
421
- RoleId[] memory roles
422
- )
423
- external
424
- onlyRegisteredService
449
+ initializer()
425
450
  {
426
451
  (
427
- IInstance instance, // or instanceInfo
428
- NftId targetNftId // or targetInfo
429
- ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
430
-
431
- InstanceAccessManager accessManager = instance.getInstanceAccessManager();
432
- accessManager.createGifTarget(targetAddress, targetName);
433
- // set proposed target config
434
- // TODO restriction: for gif targets can set only once and only here?
435
- // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
436
- for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++)
437
- {
438
- accessManager.setCoreTargetFunctionRole(targetName, selectors[roleIdx], roles[roleIdx]);
439
- }
440
- }
452
+ address authority,
453
+ address registry
454
+ ) = abi.decode(data, (address, address));
441
455
 
442
- // TODO called by component, but target can be component helper...so needs target name
443
- // TODO check that targetName associated with component...how???
444
- function setComponentLocked(bool locked) onlyComponent external {
456
+ __Service_init(authority, registry, owner);
445
457
 
446
- address componentAddress = msg.sender;
447
- IRegistry registry = getRegistry();
448
- NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
449
-
450
- IInstance instance = IInstance(
451
- registry.getObjectInfo(
452
- instanceNftId).objectAddress);
458
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
459
+ _stakingService = IStakingService(_getServiceAddress(STAKING()));
460
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
453
461
 
454
- instance.getInstanceAccessManager().setTargetLocked(
455
- componentAddress,
456
- locked);
462
+ _registerInterface(type(IInstanceService).interfaceId);
457
463
  }
458
464
 
459
- function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
465
+
466
+ function _checkInstance(
467
+ address instanceAddress,
468
+ VersionPart expectedRelease
469
+ )
460
470
  internal
471
+ virtual
461
472
  view
462
- returns (IInstance instance, NftId componentNftId)
463
473
  {
464
474
  IRegistry registry = getRegistry();
465
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
466
- if(instanceInfo.objectType != INSTANCE()) {
467
- revert ErrorInstanceServiceNotInstance(instanceNftId);
475
+
476
+ NftId instanceNftId = registry.getNftIdForAddress(instanceAddress);
477
+ if (instanceNftId.eqz()) {
478
+ revert ErrorInstanceServiceNotRegistered(instanceAddress);
479
+ }
480
+
481
+ ObjectType objectType = registry.getObjectInfo(instanceNftId).objectType;
482
+ if (objectType != INSTANCE()) {
483
+ revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
468
484
  }
469
485
 
470
- IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
471
- if(componentInfo.parentNftId != instanceNftId) {
472
- revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
486
+ if (expectedRelease.gtz()) {
487
+ VersionPart instanceRelease = IInstance(instanceAddress).getRelease();
488
+ if (instanceRelease != expectedRelease) {
489
+ revert ErrorInstanceServiceInstanceVersionMismatch(instanceNftId, expectedRelease, instanceRelease);
490
+ }
473
491
  }
492
+ }
493
+
474
494
 
475
- instance = Instance(instanceInfo.objectAddress);
476
- componentNftId = componentInfo.nftId;
495
+ // From IService
496
+ function _getDomain() internal pure override returns(ObjectType) {
497
+ return INSTANCE();
477
498
  }
478
499
  }