@etherisc/gif-next 0.0.2-b244df3-779 → 0.0.2-b2910e7-757

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 (732) hide show
  1. package/README.md +85 -23
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +125 -11
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1310 -0
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1004 -0
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1494 -0
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +862 -0
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +903 -0
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +984 -0
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1415 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1965 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1416 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1163 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2267 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +311 -1361
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +372 -179
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +388 -2570
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1671 -0
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1022 -391
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +489 -498
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +352 -130
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3668 -0
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  84. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -144
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  88. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  89. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  90. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  91. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  92. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  93. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  94. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  96. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  97. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  98. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  100. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  101. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  102. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  103. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → oracle/IOracleService.sol/IOracleService.json} +339 -294
  104. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  105. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  106. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +982 -0
  108. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +746 -0
  110. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1240 -0
  112. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  114. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  115. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1469 -0
  116. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +850 -0
  118. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  119. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +964 -0
  120. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  121. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +895 -0
  122. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  123. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1285 -0
  124. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  125. package/artifacts/contracts/pool/Pool.sol/Pool.json +1015 -0
  126. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  127. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1635 -0
  128. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +786 -0
  130. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  131. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +787 -0
  132. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +734 -0
  134. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  135. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1134 -0
  136. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  138. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  139. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1439 -0
  140. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  141. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +858 -0
  142. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  143. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +251 -241
  144. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  145. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -0
  146. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  147. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +931 -0
  148. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  149. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +578 -0
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  151. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +991 -0
  152. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  153. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +150 -187
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  155. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1316 -0
  156. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +802 -0
  158. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  159. package/artifacts/contracts/product/PricingService.sol/PricingService.json +923 -0
  160. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  162. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  163. package/artifacts/contracts/product/Product.sol/Product.json +1092 -0
  164. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  165. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  166. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  167. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  168. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  169. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  170. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +655 -114
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +305 -233
  174. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  176. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/Registry.sol/Registry.json +989 -146
  178. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  179. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
  180. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  181. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +304 -335
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +343 -123
  184. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  185. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  186. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  187. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  188. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  189. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  190. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  191. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  192. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  193. package/artifacts/contracts/shared/Component.sol/Component.json +695 -0
  194. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1932 -0
  196. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  197. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +846 -0
  198. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  199. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +158 -137
  200. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  201. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +111 -0
  202. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/IComponent.sol/IComponent.json} +291 -192
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  205. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1467 -0
  206. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +361 -333
  208. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +96 -34
  210. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  212. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  214. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  215. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  216. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +40 -31
  218. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  219. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  220. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IService.sol/IService.json +119 -165
  222. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  223. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  224. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  225. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  226. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  227. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +129 -20
  228. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  229. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  230. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  231. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  232. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  234. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  235. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  236. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +96 -48
  238. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  239. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  240. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  241. package/artifacts/contracts/shared/Service.sol/Service.json +150 -176
  242. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  243. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +734 -8
  244. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  245. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  246. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  247. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  248. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  249. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
  250. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  251. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  252. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  254. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  255. package/artifacts/contracts/staking/Staking.sol/Staking.json +1816 -0
  256. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  258. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
  260. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  262. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1265 -0
  264. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +734 -0
  266. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  267. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  268. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  269. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  270. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  271. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  272. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  274. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  276. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  278. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  280. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  282. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  284. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  286. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  287. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  288. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  290. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  292. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  294. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  296. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  298. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  300. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  302. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  304. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  306. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  308. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  310. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  312. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  314. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  316. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  318. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  320. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  321. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  322. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  323. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  324. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  325. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  326. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  327. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  328. package/contracts/authorization/AccessAdmin.sol +596 -0
  329. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  330. package/contracts/authorization/Authorization.sol +289 -0
  331. package/contracts/authorization/IAccess.sol +49 -0
  332. package/contracts/authorization/IAccessAdmin.sol +137 -0
  333. package/contracts/authorization/IAuthorization.sol +60 -0
  334. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  335. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  336. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  337. package/contracts/distribution/BasicDistribution.sol +139 -0
  338. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  339. package/contracts/distribution/Distribution.sol +284 -0
  340. package/contracts/distribution/DistributionService.sol +354 -0
  341. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  342. package/contracts/distribution/IDistributionComponent.sol +52 -0
  343. package/contracts/distribution/IDistributionService.sol +100 -0
  344. package/contracts/examples/fire/DamageLevel.sol +59 -0
  345. package/contracts/examples/fire/FirePool.sol +86 -0
  346. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  347. package/contracts/examples/fire/FireProduct.sol +431 -0
  348. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  349. package/contracts/examples/fire/FireUSD.sol +26 -0
  350. package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
  351. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  352. package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
  353. package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
  354. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +40 -43
  355. package/contracts/instance/IInstance.sol +56 -51
  356. package/contracts/instance/IInstanceService.sol +52 -20
  357. package/contracts/instance/Instance.sol +165 -211
  358. package/contracts/instance/InstanceAdmin.sol +283 -0
  359. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  360. package/contracts/instance/InstanceReader.sol +264 -84
  361. package/contracts/instance/InstanceService.sol +303 -207
  362. package/contracts/instance/InstanceServiceManager.sol +14 -32
  363. package/contracts/instance/InstanceStore.sol +287 -0
  364. package/contracts/instance/base/BalanceStore.sol +123 -0
  365. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  366. package/contracts/instance/base/ObjectCounter.sol +21 -0
  367. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  368. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +20 -42
  369. package/contracts/instance/module/IAccess.sol +20 -22
  370. package/contracts/instance/module/IBundle.sol +8 -8
  371. package/contracts/instance/module/IComponents.sol +50 -0
  372. package/contracts/instance/module/IDistribution.sol +6 -4
  373. package/contracts/instance/module/IPolicy.sol +59 -19
  374. package/contracts/instance/module/IRisk.sol +1 -1
  375. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  376. package/contracts/oracle/BasicOracle.sol +47 -0
  377. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  378. package/contracts/oracle/IOracle.sol +36 -0
  379. package/contracts/oracle/IOracleComponent.sol +33 -0
  380. package/contracts/oracle/IOracleService.sol +66 -0
  381. package/contracts/oracle/Oracle.sol +156 -0
  382. package/contracts/oracle/OracleService.sol +292 -0
  383. package/contracts/oracle/OracleServiceManager.sol +39 -0
  384. package/contracts/pool/BasicPool.sol +175 -0
  385. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  386. package/contracts/pool/BundleService.sol +485 -0
  387. package/contracts/pool/BundleServiceManager.sol +39 -0
  388. package/contracts/pool/IBundleService.sol +140 -0
  389. package/contracts/pool/IPoolComponent.sol +62 -0
  390. package/contracts/pool/IPoolService.sol +172 -0
  391. package/contracts/pool/Pool.sol +345 -0
  392. package/contracts/pool/PoolService.sol +620 -0
  393. package/contracts/pool/PoolServiceManager.sol +39 -0
  394. package/contracts/product/ApplicationService.sol +259 -0
  395. package/contracts/product/ApplicationServiceManager.sol +38 -0
  396. package/contracts/product/BasicProduct.sol +49 -0
  397. package/contracts/product/BasicProductAuthorization.sol +42 -0
  398. package/contracts/product/ClaimService.sol +614 -0
  399. package/contracts/product/ClaimServiceManager.sol +38 -0
  400. package/contracts/product/IApplicationService.sol +63 -0
  401. package/contracts/product/IClaimService.sol +123 -0
  402. package/contracts/product/IPolicyService.sol +82 -0
  403. package/contracts/product/IPricingService.sol +39 -0
  404. package/contracts/product/IProductComponent.sol +59 -0
  405. package/contracts/product/IRiskService.sol +33 -0
  406. package/contracts/product/PolicyService.sol +695 -0
  407. package/contracts/product/PolicyServiceManager.sol +39 -0
  408. package/contracts/product/PricingService.sol +300 -0
  409. package/contracts/product/PricingServiceManager.sol +39 -0
  410. package/contracts/product/Product.sol +432 -0
  411. package/contracts/product/RiskService.sol +96 -0
  412. package/contracts/product/RiskServiceManager.sol +39 -0
  413. package/contracts/registry/ChainNft.sol +78 -33
  414. package/contracts/registry/IRegistry.sol +127 -35
  415. package/contracts/registry/IRegistryService.sol +40 -28
  416. package/contracts/registry/ITransferInterceptor.sol +1 -1
  417. package/contracts/registry/Registry.sol +550 -273
  418. package/contracts/registry/RegistryAdmin.sol +462 -0
  419. package/contracts/registry/RegistryService.sol +116 -233
  420. package/contracts/registry/RegistryServiceManager.sol +26 -53
  421. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  422. package/contracts/registry/ReleaseRegistry.sol +485 -0
  423. package/contracts/registry/ServiceAuthorizationV3.sol +203 -0
  424. package/contracts/registry/TokenRegistry.sol +261 -57
  425. package/contracts/shared/Component.sol +234 -0
  426. package/contracts/shared/ComponentService.sol +819 -0
  427. package/contracts/shared/ComponentServiceManager.sol +38 -0
  428. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  429. package/contracts/shared/ContractLib.sol +54 -0
  430. package/contracts/shared/IComponent.sol +67 -0
  431. package/contracts/shared/IComponentService.sol +134 -0
  432. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  433. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  434. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  435. package/contracts/shared/INftOwnable.sol +15 -12
  436. package/contracts/shared/IPolicyHolder.sol +35 -0
  437. package/contracts/shared/IRegisterable.sol +15 -6
  438. package/contracts/shared/IRegistryLinked.sol +11 -0
  439. package/contracts/shared/IService.sol +16 -6
  440. package/contracts/shared/InitializableERC165.sol +27 -0
  441. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  442. package/contracts/shared/KeyValueStore.sol +131 -0
  443. package/contracts/shared/Lifecycle.sol +88 -0
  444. package/contracts/shared/NftIdSet.sol +65 -0
  445. package/contracts/shared/NftOwnable.sol +75 -82
  446. package/contracts/shared/PolicyHolder.sol +62 -0
  447. package/contracts/shared/Registerable.sol +34 -41
  448. package/contracts/shared/RegistryLinked.sol +38 -0
  449. package/contracts/shared/Service.sol +61 -32
  450. package/contracts/shared/TokenHandler.sol +382 -12
  451. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  452. package/contracts/staking/IStaking.sol +173 -0
  453. package/contracts/staking/IStakingService.sol +157 -0
  454. package/contracts/staking/StakeManagerLib.sol +224 -0
  455. package/contracts/staking/Staking.sol +505 -0
  456. package/contracts/staking/StakingLifecycle.sol +23 -0
  457. package/contracts/staking/StakingManager.sol +52 -0
  458. package/contracts/staking/StakingReader.sol +190 -0
  459. package/contracts/staking/StakingService.sol +453 -0
  460. package/contracts/staking/StakingServiceManager.sol +44 -0
  461. package/contracts/staking/StakingStore.sol +605 -0
  462. package/contracts/staking/TargetManagerLib.sol +211 -0
  463. package/contracts/{types → type}/AddressSet.sol +1 -1
  464. package/contracts/type/Amount.sol +150 -0
  465. package/contracts/{types → type}/Blocknumber.sol +27 -3
  466. package/contracts/type/ClaimId.sol +80 -0
  467. package/contracts/{types → type}/DistributorType.sol +2 -2
  468. package/contracts/{types → type}/Fee.sol +33 -23
  469. package/contracts/{types → type}/NftId.sol +22 -15
  470. package/contracts/{types → type}/NftIdSet.sol +2 -2
  471. package/contracts/type/ObjectType.sol +276 -0
  472. package/contracts/type/PayoutId.sol +82 -0
  473. package/contracts/{types → type}/Referral.sol +6 -1
  474. package/contracts/type/RequestId.sol +75 -0
  475. package/contracts/{types → type}/RiskId.sol +17 -3
  476. package/contracts/type/RoleId.sol +162 -0
  477. package/contracts/type/Seconds.sol +101 -0
  478. package/contracts/type/Selector.sol +102 -0
  479. package/contracts/{types → type}/StateId.sol +48 -4
  480. package/contracts/type/String.sol +53 -0
  481. package/contracts/{types → type}/Timestamp.sol +34 -15
  482. package/contracts/{types → type}/UFixed.sol +39 -9
  483. package/contracts/{types → type}/Version.sol +5 -2
  484. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  485. package/contracts/upgradeability/ProxyManager.sol +232 -0
  486. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  487. package/contracts/upgradeability/Versionable.sol +59 -0
  488. package/package.json +11 -7
  489. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  490. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  491. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  492. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  493. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -368
  494. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  495. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  496. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  497. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  498. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  499. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  500. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  501. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  502. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  503. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  504. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  506. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  508. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  510. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  512. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  514. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  516. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  518. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  520. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  521. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  522. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  523. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  524. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  525. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  526. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  527. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  528. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  529. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  530. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  531. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  532. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  533. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  534. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  535. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  536. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  537. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  538. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  539. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  540. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  541. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  542. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  543. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  544. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  545. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  546. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -788
  547. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  548. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  549. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  550. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  551. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1039
  552. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  553. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  554. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  555. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  556. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  557. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  558. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  559. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  560. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  561. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  562. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  563. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  564. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  565. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  566. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  568. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -923
  569. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  570. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -440
  571. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  573. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -684
  575. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  577. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  578. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  580. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  581. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  582. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -499
  584. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  585. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  586. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -984
  587. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  588. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
  589. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -718
  591. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  592. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -428
  593. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  594. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -768
  595. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  596. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  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 -35
  601. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  602. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  603. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  604. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  605. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  606. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  607. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  608. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  609. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  610. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  611. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  612. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  613. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  614. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  615. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  616. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  617. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  618. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  619. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  620. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  621. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  622. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  623. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  624. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  625. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  626. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  627. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  628. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  629. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  631. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  632. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  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 -257
  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 -153
  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/Referral.sol/ReferralLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  649. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  650. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  651. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  652. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  653. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  654. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  655. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  656. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  657. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  658. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  659. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  660. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  661. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  663. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  665. package/contracts/components/BaseComponent.sol +0 -132
  666. package/contracts/components/Distribution.sol +0 -163
  667. package/contracts/components/IBaseComponent.sol +0 -31
  668. package/contracts/components/IDistributionComponent.sol +0 -44
  669. package/contracts/components/IPoolComponent.sol +0 -66
  670. package/contracts/components/IProductComponent.sol +0 -35
  671. package/contracts/components/Pool.sol +0 -271
  672. package/contracts/components/Product.sol +0 -292
  673. package/contracts/experiment/cloning/Cloner.sol +0 -47
  674. package/contracts/experiment/errors/Require.sol +0 -38
  675. package/contracts/experiment/errors/Revert.sol +0 -44
  676. package/contracts/experiment/inheritance/A.sol +0 -53
  677. package/contracts/experiment/inheritance/B.sol +0 -28
  678. package/contracts/experiment/inheritance/C.sol +0 -34
  679. package/contracts/experiment/inheritance/IA.sol +0 -13
  680. package/contracts/experiment/inheritance/IB.sol +0 -10
  681. package/contracts/experiment/inheritance/IC.sol +0 -12
  682. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  683. package/contracts/experiment/statemachine/ISM.sol +0 -25
  684. package/contracts/experiment/statemachine/SM.sol +0 -57
  685. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  686. package/contracts/experiment/types/TypeA.sol +0 -47
  687. package/contracts/experiment/types/TypeB.sol +0 -29
  688. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  689. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  690. package/contracts/instance/IInstanceBase.sol +0 -26
  691. package/contracts/instance/InstanceAccessManager.sol +0 -302
  692. package/contracts/instance/InstanceBase.sol +0 -41
  693. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  694. package/contracts/instance/base/IInstanceBase.sol +0 -23
  695. package/contracts/instance/base/KeyValueStore.sol +0 -172
  696. package/contracts/instance/base/Lifecycle.sol +0 -100
  697. package/contracts/instance/module/ISetup.sol +0 -46
  698. package/contracts/instance/module/ITreasury.sol +0 -23
  699. package/contracts/instance/service/BundleService.sol +0 -260
  700. package/contracts/instance/service/BundleServiceManager.sol +0 -54
  701. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  702. package/contracts/instance/service/DistributionService.sol +0 -118
  703. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  704. package/contracts/instance/service/IBundleService.sol +0 -45
  705. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  706. package/contracts/instance/service/IDistributionService.sol +0 -12
  707. package/contracts/instance/service/IPolicyService.sol +0 -87
  708. package/contracts/instance/service/IPoolService.sol +0 -20
  709. package/contracts/instance/service/IProductService.sol +0 -40
  710. package/contracts/instance/service/PolicyService.sol +0 -508
  711. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  712. package/contracts/instance/service/PoolService.sol +0 -124
  713. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  714. package/contracts/instance/service/ProductService.sol +0 -173
  715. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  716. package/contracts/shared/ContractDeployerLib.sol +0 -72
  717. package/contracts/shared/ERC165.sol +0 -25
  718. package/contracts/shared/ProxyManager.sol +0 -94
  719. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  720. package/contracts/shared/Versionable.sol +0 -147
  721. package/contracts/test/TestFee.sol +0 -25
  722. package/contracts/test/TestRegisterable.sol +0 -18
  723. package/contracts/test/TestRoleId.sol +0 -14
  724. package/contracts/test/TestService.sol +0 -24
  725. package/contracts/test/TestToken.sol +0 -26
  726. package/contracts/test/TestVersion.sol +0 -44
  727. package/contracts/test/TestVersionable.sol +0 -17
  728. package/contracts/types/ChainId.sol +0 -38
  729. package/contracts/types/NumberId.sol +0 -52
  730. package/contracts/types/ObjectType.sol +0 -152
  731. package/contracts/types/RoleId.sol +0 -92
  732. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -3,282 +3,378 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
5
 
6
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {BundleSet} from "./BundleSet.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {RoleId} from "../type/RoleId.sol";
11
+ import {UFixed} from "../type/UFixed.sol";
12
+ import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
13
+
14
+ import {Service} from "../shared/Service.sol";
15
+
16
+ import {IRegistry} from "../registry/IRegistry.sol";
17
+ import {IRegistryService} from "../registry/IRegistryService.sol";
18
+ import {IStakingService} from "../staking/IStakingService.sol";
19
+ import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
20
+
21
+ import {IComponentService} from "../shared/IComponentService.sol";
6
22
  import {Instance} from "./Instance.sol";
7
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
23
+ import {IInstance} from "./IInstance.sol";
24
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
8
25
  import {IInstanceService} from "./IInstanceService.sol";
9
26
  import {InstanceReader} from "./InstanceReader.sol";
10
- import {BundleManager} from "./BundleManager.sol";
11
- import {IRegistry} from "../registry/IRegistry.sol";
12
- import {RegistryService} from "../registry/RegistryService.sol";
13
- import {Service} from "../../contracts/shared/Service.sol";
14
- import {IService} from "../shared/IService.sol";
15
- import {NftId} from "../../contracts/types/NftId.sol";
16
- import {RoleId} from "../types/RoleId.sol";
17
- import {VersionLib} from "../types/Version.sol";
18
- import {ADMIN_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, POLICY_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
27
+ import {InstanceStore} from "./InstanceStore.sol";
28
+ import {Seconds} from "../type/Seconds.sol";
29
+ import {VersionPart} from "../type/Version.sol";
19
30
 
20
- contract InstanceService is Service, IInstanceService {
21
31
 
22
- address internal _masterInstanceAccessManager;
23
- address internal _masterInstance;
24
- address internal _masterInstanceReader;
25
- address internal _masterInstanceBundleManager;
32
+ contract InstanceService is
33
+ Service,
34
+ IInstanceService
35
+ {
26
36
 
27
37
  // TODO update to real hash when instance is stable
28
38
  bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
29
- string public constant NAME = "InstanceService";
30
39
 
31
- function createInstanceClone()
40
+ IRegistryService internal _registryService;
41
+ IStakingService internal _stakingService;
42
+ IComponentService internal _componentService;
43
+
44
+ address internal _masterAccessManager;
45
+ address internal _masterInstanceAdmin;
46
+ address internal _masterInstance;
47
+ address internal _masterInstanceReader;
48
+ address internal _masterInstanceBundleSet;
49
+ address internal _masterInstanceStore;
50
+
51
+
52
+ modifier onlyInstance() {
53
+ address instanceAddress = msg.sender;
54
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
55
+ if (instanceNftId.eqz()) {
56
+ revert ErrorInstanceServiceNotRegistered(instanceAddress);
57
+ }
58
+
59
+ ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
60
+ if (objectType != INSTANCE()) {
61
+ revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
62
+ }
63
+
64
+ VersionPart instanceVersion = IInstance(instanceAddress).getRelease();
65
+ if (instanceVersion != getVersion().toMajorPart()) {
66
+ revert ErrorInstanceServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
67
+ }
68
+
69
+ _;
70
+ }
71
+
72
+
73
+ modifier onlyInstanceOwner(NftId instanceNftId) {
74
+ if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
75
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
76
+ }
77
+ _;
78
+ }
79
+
80
+ // TODO check component - service - instance version match
81
+ modifier onlyComponent() {
82
+ if (! getRegistry().isRegisteredComponent(msg.sender)) {
83
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
84
+ }
85
+ _;
86
+ }
87
+
88
+ function createInstance()
32
89
  external
33
90
  returns (
34
- InstanceAccessManager clonedAccessManager,
35
- Instance clonedInstance,
36
- NftId clonedInstanceNftId,
37
- InstanceReader clonedInstanceReader,
38
- BundleManager clonedBundleManager
91
+ IInstance instance,
92
+ NftId instanceNftId
39
93
  )
40
94
  {
95
+ // tx sender will become instance owner
41
96
  address instanceOwner = msg.sender;
42
- IRegistry registry = getRegistry();
43
- address registryAddress = address(registry);
44
- NftId registryNftId = registry.getNftId(registryAddress);
45
- address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
46
- RegistryService registryService = RegistryService(registryServiceAddress);
47
-
48
- // initially set the authority of the access managar to this (being the instance service).
49
- // This will allow the instance service to bootstrap the authorizations of the instance
50
- // and then transfer the ownership of the access manager to the instance owner once everything is setup
51
- clonedAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
52
- clonedAccessManager.__InstanceAccessManager_initialize(address(this));
53
-
54
- clonedInstance = Instance(Clones.clone(_masterInstance));
55
- clonedInstance.initialize(address(clonedAccessManager), registryAddress, registryNftId, msg.sender);
56
- ( IRegistry.ObjectInfo memory info, ) = registryService.registerInstance(clonedInstance);
57
- clonedInstanceNftId = info.nftId;
58
-
59
- clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
60
- clonedInstanceReader.initialize(registryAddress, clonedInstanceNftId);
61
- clonedInstance.setInstanceReader(clonedInstanceReader);
62
-
63
- clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
64
- clonedBundleManager.initialize(address(clonedAccessManager), registryAddress, clonedInstanceNftId);
65
- clonedInstance.setBundleManager(clonedBundleManager);
66
97
 
67
- // TODO amend setters with instance specific , policy manager ...
98
+ // create instance admin and instance
99
+ InstanceAdmin instanceAdmin = _createInstanceAdmin();
100
+ instance = _createInstance(instanceAdmin, instanceOwner);
68
101
 
69
- _grantInitialAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
102
+ // register cloned instance with registry
103
+ instanceNftId = _registryService.registerInstance(
104
+ instance, instanceOwner).nftId;
70
105
 
71
- // to complete setup switch instance ownership to the instance owner
72
- // TODO: use a role less powerful than admin, maybe INSTANCE_ADMIN (does not exist yet)
73
- clonedAccessManager.grantRole(ADMIN_ROLE(), instanceOwner);
74
- clonedAccessManager.revokeRole(ADMIN_ROLE(), address(this));
106
+ // register cloned instance as staking target
107
+ _stakingService.createInstanceTarget(
108
+ instanceNftId,
109
+ TargetManagerLib.getDefaultLockingPeriod(),
110
+ TargetManagerLib.getDefaultRewardRate());
75
111
 
76
- emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
77
- }
112
+ // MUST be set after instance is set up and registered
113
+ instanceAdmin.initializeInstanceAuthorization(address(instance));
78
114
 
79
- function _grantInitialAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
80
- clonedAccessManager.createDefaultGifRoles();
81
- _grantRegistryServiceAuthorizations(clonedAccessManager, clonedInstance);
82
- _grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
83
- _grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
84
- _grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
85
- _grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
86
- _grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
115
+ emit LogInstanceCloned(
116
+ instanceNftId,
117
+ address(instance));
87
118
  }
88
119
 
89
- function _grantRegistryServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
90
- // configure authorization for distribution service on instance
91
- IRegistry registry = getRegistry();
92
- address distributionServiceAddress = _registry.getServiceAddress("DistributionService", VersionLib.toVersion(3, 0, 0).toMajorPart());
93
- clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), address(distributionServiceAddress));
94
- bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](2);
95
- instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
96
- instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
97
- clonedAccessManager.setTargetFunctionRole(
98
- address(clonedInstance),
99
- instanceDistributionServiceSelectors,
100
- DISTRIBUTION_SERVICE_ROLE().toInt());
101
- }
102
120
 
103
- function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
104
- // configure authorization for pool service on instance
105
- address poolServiceAddress = _registry.getServiceAddress("PoolService", VersionLib.toVersion(3, 0, 0).toMajorPart());
106
- clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
107
- bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
108
- instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
109
- instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
110
- clonedAccessManager.setTargetFunctionRole(
111
- address(clonedInstance),
112
- instancePoolServiceSelectors,
113
- POOL_SERVICE_ROLE().toInt());
121
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod)
122
+ external
123
+ virtual
124
+ onlyInstance()
125
+ {
126
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
127
+ _stakingService.setInstanceLockingPeriod(
128
+ instanceNftId,
129
+ stakeLockingPeriod);
114
130
  }
115
131
 
116
- function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
117
- // configure authorization for product service on instance
118
- address productServiceAddress = _registry.getServiceAddress("ProductService", VersionLib.toVersion(3, 0, 0).toMajorPart());
119
- clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
120
- bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
121
- instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
122
- instanceProductServiceSelectors[1] = clonedInstance.updateProductSetup.selector;
123
- instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
124
- instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
125
- instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
126
- clonedAccessManager.setTargetFunctionRole(
127
- address(clonedInstance),
128
- instanceProductServiceSelectors,
129
- PRODUCT_SERVICE_ROLE().toInt());
130
- }
131
132
 
132
- function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
133
- // configure authorization for policy service on instance
134
- address policyServiceAddress = _registry.getServiceAddress("PolicyService", VersionLib.toVersion(3, 0, 0).toMajorPart());
135
- clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), address(policyServiceAddress));
136
- bytes4[] memory instancePolicyServiceSelectors = new bytes4[](3);
137
- instancePolicyServiceSelectors[0] = clonedInstance.createPolicy.selector;
138
- instancePolicyServiceSelectors[1] = clonedInstance.updatePolicy.selector;
139
- instancePolicyServiceSelectors[2] = clonedInstance.updatePolicyState.selector;
140
- clonedAccessManager.setTargetFunctionRole(
141
- address(clonedInstance),
142
- instancePolicyServiceSelectors,
143
- POLICY_SERVICE_ROLE().toInt());
133
+ function setStakingRewardRate(UFixed rewardRate)
134
+ external
135
+ virtual
136
+ onlyInstance()
137
+ {
138
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
139
+ _stakingService.setInstanceRewardRate(
140
+ instanceNftId,
141
+ rewardRate);
144
142
  }
145
143
 
146
- function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
147
- // configure authorization for bundle service on instance
148
- address bundleServiceAddress = _registry.getServiceAddress("BundleService", VersionLib.toVersion(3, 0, 0).toMajorPart());
149
- clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
150
- bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
151
- instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
152
- instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
153
- clonedAccessManager.setTargetFunctionRole(
154
- address(clonedInstance),
155
- instanceBundleServiceSelectors,
156
- BUNDLE_SERVICE_ROLE().toInt());
157
-
158
- // configure authorization for bundle service on bundle manager
159
- bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
160
- bundleManagerBundleServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
161
- bundleManagerBundleServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
162
- bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
163
- bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
164
- bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
165
- clonedAccessManager.setTargetFunctionRole(
166
- address(clonedBundleManager),
167
- bundleManagerBundleServiceSelectors,
168
- BUNDLE_SERVICE_ROLE().toInt());
169
- }
170
144
 
171
- function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
172
- // configure authorization for instance service on instance
173
- address instanceServiceAddress = _registry.getServiceAddress("InstanceService", VersionLib.toVersion(3, 0, 0).toMajorPart());
174
- clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
175
- bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
176
- instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
177
- clonedAccessManager.setTargetFunctionRole(
178
- address(clonedInstance),
179
- instanceInstanceServiceSelectors,
180
- INSTANCE_SERVICE_ROLE().toInt());
145
+ function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
146
+ external
147
+ virtual
148
+ onlyInstance()
149
+ {
150
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
151
+ _stakingService.refillInstanceRewardReserves(
152
+ instanceNftId,
153
+ rewardProvider,
154
+ dipAmount);
181
155
  }
182
156
 
183
- function setMasterInstance(address accessManagerAddress, address instanceAddress, address instanceReaderAddress, address bundleManagerAddress) external onlyOwner {
184
- require(_masterInstanceAccessManager == address(0), "ERROR:CRD-001:ACCESS_MANAGER_MASTER_ALREADY_SET");
185
- require(_masterInstance == address(0), "ERROR:CRD-002:INSTANCE_MASTER_ALREADY_SET");
186
- require(_masterInstanceBundleManager == address(0), "ERROR:CRD-004:BUNDLE_MANAGER_MASTER_ALREADY_SET");
187
-
188
- require (accessManagerAddress != address(0), "ERROR:CRD-005:ACCESS_MANAGER_ZERO");
189
- require (instanceAddress != address(0), "ERROR:CRD-006:INSTANCE_ZERO");
190
- require (instanceReaderAddress != address(0), "ERROR:CRD-007:INSTANCE_READER_ZERO");
191
- require (bundleManagerAddress != address(0), "ERROR:CRD-008:BUNDLE_MANAGER_ZERO");
192
157
 
193
- Instance instance = Instance(instanceAddress);
194
- InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
195
- BundleManager bundleManager = BundleManager(bundleManagerAddress);
158
+ function withdrawStakingRewardReserves(Amount dipAmount)
159
+ external
160
+ virtual
161
+ onlyInstance()
162
+ returns (Amount newBalance)
163
+ {
164
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
165
+ _stakingService.withdrawInstanceRewardReserves(
166
+ instanceNftId,
167
+ dipAmount);
168
+ }
196
169
 
197
- require(instance.authority() == accessManagerAddress, "ERROR:CRD-009:INSTANCE_AUTHORITY_MISMATCH");
198
- require(instanceReader.getInstanceNftId() == instance.getNftId(), "ERROR:CRD-010:INSTANCE_READER_INSTANCE_MISMATCH");
199
- require(bundleManager.getInstanceNftId() == instance.getNftId(), "ERROR:CRD-011:BUNDLE_MANAGER_INSTANCE_MISMATCH");
170
+ function getMasterInstanceReader() external view returns (address) {
171
+ return _masterInstanceReader;
172
+ }
200
173
 
201
- _masterInstanceAccessManager = accessManagerAddress;
174
+ function setAndRegisterMasterInstance(address instanceAddress)
175
+ external
176
+ onlyOwner
177
+ returns(NftId masterInstanceNftId)
178
+ {
179
+ if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
180
+ if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
181
+ if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
182
+
183
+ if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
184
+
185
+ IInstance instance = IInstance(instanceAddress);
186
+ address accessManagerAddress = instance.authority();
187
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
188
+ address instanceAdminAddress = address(instanceAdmin);
189
+ InstanceReader instanceReader = instance.getInstanceReader();
190
+ address instanceReaderAddress = address(instanceReader);
191
+ BundleSet bundleManager = instance.getBundleSet();
192
+ address bundleManagerAddress = address(bundleManager);
193
+ InstanceStore instanceStore = instance.getInstanceStore();
194
+ address instanceStoreAddress = address(instanceStore);
195
+
196
+ if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
197
+ if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
198
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
199
+ if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
200
+ if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
201
+
202
+ if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
203
+ if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
204
+ if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
205
+ if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
206
+ if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
207
+
208
+ _masterAccessManager = accessManagerAddress;
209
+ _masterInstanceAdmin = instanceAdminAddress;
202
210
  _masterInstance = instanceAddress;
203
211
  _masterInstanceReader = instanceReaderAddress;
204
- _masterInstanceBundleManager = bundleManagerAddress;
212
+ _masterInstanceBundleSet = bundleManagerAddress;
213
+ _masterInstanceStore = instanceStoreAddress;
214
+
215
+ IInstance masterInstance = IInstance(_masterInstance);
216
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
217
+ masterInstanceNftId = info.nftId;
205
218
  }
206
219
 
207
- function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
208
- require(_masterInstanceReader != address(0), "ERROR:CRD-003:INSTANCE_READER_MASTER_NOT_SET");
209
- require (instanceReaderAddress != address(0), "ERROR:CRD-012:INSTANCE_READER_ZERO");
210
- require(instanceReaderAddress != _masterInstanceReader, "ERROR:CRD-014:INSTANCE_READER_MASTER_SAME_AS_NEW");
220
+ function upgradeMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
221
+ if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
222
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
223
+ if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
211
224
 
212
225
  InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
213
- require(instanceReader.getInstanceNftId() == Instance(_masterInstance).getNftId(), "ERROR:CRD-015:INSTANCE_READER_INSTANCE_MISMATCH");
226
+ if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
214
227
 
215
228
  _masterInstanceReader = instanceReaderAddress;
216
229
  }
217
230
 
218
- function upgradeInstanceReader(NftId instanceNftId) external {
231
+ function upgradeInstanceReader(NftId instanceNftId)
232
+ external
233
+ onlyInstanceOwner(instanceNftId)
234
+ onlyNftOfType(instanceNftId, INSTANCE())
235
+ {
219
236
  IRegistry registry = getRegistry();
220
237
  IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
221
238
  Instance instance = Instance(instanceInfo.objectAddress);
222
- address owner = instance.getOwner();
223
-
224
- if (msg.sender != owner) {
225
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
226
- }
227
239
 
228
240
  InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
229
- upgradedInstanceReaderClone.initialize(address(registry), instanceNftId);
241
+ upgradedInstanceReaderClone.initializeWithInstance(address(instance));
230
242
  instance.setInstanceReader(upgradedInstanceReaderClone);
231
243
  }
232
244
 
233
- function getMasterInstanceReader() external view returns (address) {
234
- return _masterInstanceReader;
245
+ /// @dev create new cloned instance admin
246
+ /// function used to setup a new instance
247
+ function _createInstanceAdmin()
248
+ internal
249
+ virtual
250
+ returns (InstanceAdmin clonedInstanceAdmin)
251
+ {
252
+ // start with setting up a new OZ access manager
253
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
254
+ Clones.clone(_masterAccessManager));
255
+
256
+ // set up the instance admin
257
+ clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
258
+ clonedAccessManager.initialize(
259
+ address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
260
+
261
+ address authorization = address(
262
+ InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
263
+ clonedInstanceAdmin.initialize(
264
+ clonedAccessManager,
265
+ authorization);
235
266
  }
236
267
 
237
- function getMasterInstance() external view returns (address) {
238
- return _masterInstance;
239
- }
240
268
 
241
- function getMasterInstanceAccessManager() external view returns (address) {
242
- return _masterInstanceAccessManager;
269
+ /// @dev create new cloned instance
270
+ /// function used to setup a new instance
271
+ function _createInstance(
272
+ InstanceAdmin instanceAdmin,
273
+ address instanceOwner
274
+ )
275
+ internal
276
+ virtual
277
+ returns (IInstance)
278
+ {
279
+ InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
280
+ BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
281
+ InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
282
+
283
+ // clone instance
284
+ Instance clonedInstance = Instance(Clones.clone(_masterInstance));
285
+ clonedInstance.initialize(
286
+ instanceAdmin,
287
+ clonedInstanceStore,
288
+ clonedBundleSet,
289
+ clonedInstanceReader,
290
+ getRegistry(),
291
+ instanceOwner);
292
+ return clonedInstance;
243
293
  }
244
294
 
245
- function getMasterInstanceBundleManager() external view returns (address) {
246
- return _masterInstanceBundleManager;
247
- }
248
295
 
249
- // From IService
250
- function getName() public pure override(IService, Service) returns(string memory) {
251
- return NAME;
296
+ /// all gif targets MUST be children of instanceNftId
297
+ function _createGifTarget(
298
+ NftId instanceNftId,
299
+ address targetAddress,
300
+ string memory targetName,
301
+ RoleId[] memory roles,
302
+ bytes4[][] memory selectors
303
+ )
304
+ internal
305
+ virtual
306
+ {
307
+ // TODO instanceAdmin will check target instance match anyway
308
+ (
309
+ IInstance instance, // or instanceInfo
310
+ // or targetInfo
311
+ ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
312
+
313
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
314
+
315
+ // TODO refactor/implement
316
+ // instanceAdmin.createGifTarget(targetAddress, targetName);
317
+
318
+ // set proposed target config
319
+ for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
320
+ // TODO refactor/implement
321
+ // instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
322
+ }
252
323
  }
253
324
 
254
325
  /// @dev top level initializer
255
- // 1) registry is non upgradeable -> don't need a proxy and uses constructor !
256
- // 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
257
- // 3) deploy registry -> pass registry service address as constructor argument
258
- // registry is getting instantiated and locked to registry service address forever
259
326
  function _initialize(
260
327
  address owner,
261
328
  bytes memory data
262
329
  )
263
330
  internal
264
- initializer
265
331
  virtual override
332
+ initializer()
266
333
  {
267
- address initialOwner = address(0);
268
- address registryAddress = address(0);
269
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
270
- // TODO while InstanceService is not deployed in InstanceServiceManager constructor
271
- // owner is InstanceServiceManager deployer
272
- _initializeService(registryAddress, owner);
273
-
274
- _registerInterface(type(IService).interfaceId);
334
+ (
335
+ address registryAddress,
336
+ address authority
337
+ ) = abi.decode(data, (address, address));
338
+
339
+ _initializeService(registryAddress, authority, owner);
340
+
341
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
342
+ _stakingService = IStakingService(_getServiceAddress(STAKING()));
343
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
344
+
275
345
  _registerInterface(type(IInstanceService).interfaceId);
276
346
  }
277
347
 
278
- function hasRole(address account, RoleId role, address instanceAddress) external view returns (bool) {
279
- Instance instance = Instance(instanceAddress);
280
- InstanceAccessManager accessManager = instance.getInstanceAccessManager();
281
- return accessManager.hasRole(role, account);
348
+
349
+ function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
350
+ internal
351
+ view
352
+ returns (IInstance instance, NftId componentNftId)
353
+ {
354
+ IRegistry registry = getRegistry();
355
+ IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
356
+ if(instanceInfo.objectType != INSTANCE()) {
357
+ revert ErrorInstanceServiceNotInstanceNftId(instanceNftId);
358
+ }
359
+
360
+ if (registry.getNftIdForAddress(componentAddress).gtz()) {
361
+ IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
362
+
363
+ if(componentInfo.parentNftId != instanceNftId) {
364
+ revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
365
+ }
366
+
367
+ componentNftId = componentInfo.nftId;
368
+ } else {
369
+
370
+ }
371
+
372
+ instance = Instance(instanceInfo.objectAddress);
373
+
282
374
  }
283
- }
284
375
 
376
+ // From IService
377
+ function _getDomain() internal pure override returns(ObjectType) {
378
+ return INSTANCE();
379
+ }
380
+ }
@@ -1,48 +1,30 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Instance} from "./Instance.sol";
5
- import {IVersionable} from "../shared/IVersionable.sol";
6
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
6
  import {InstanceService} from "./InstanceService.sol";
8
- import {Registry} from "../registry/Registry.sol";
9
- import {RegistryService} from "../registry/RegistryService.sol";
10
- import {VersionLib} from "../types/Version.sol";
11
7
 
12
8
  contract InstanceServiceManager is ProxyManager {
13
9
 
14
10
  InstanceService private _instanceService;
15
11
 
16
- /// @dev initializes proxy manager with instance service implementation and deploys instance
12
+ /// @dev initializes proxy manager with instance service implementation
17
13
  constructor(
18
- address registryAddress
19
- )
20
- ProxyManager()
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
21
18
  {
22
- InstanceService instSrv = new InstanceService();
23
- // bytes memory initCode = type(InstanceService).creationCode;
24
- bytes memory data = abi.encode(registryAddress, address(this));
25
- IVersionable versionable = deploy(
26
- address(instSrv),
27
- data);
19
+ InstanceService svc = new InstanceService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
+ data,
25
+ salt);
28
26
 
29
27
  _instanceService = InstanceService(address(versionable));
30
-
31
- Registry registry = Registry(registryAddress);
32
- address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
33
- RegistryService registryService = RegistryService(registryServiceAddress);
34
- // TODO this must have a role or own nft to register service
35
- //registryService.registerService(_instanceService);
36
- // RegistryService registryService = _instanceService.getRegistryService();
37
-
38
- // TODO no nft to link yet
39
- // link ownership of instance service manager ot nft owner of instance service
40
- //_linkToNftOwnable(
41
- // address(registryAddress),
42
- // address(_instanceService));
43
-
44
- // implies that after this constructor call only upgrade functionality is available
45
- _isDeployed = true;
46
28
  }
47
29
 
48
30
  //--- view functions ----------------------------------------------------//