@etherisc/gif-next 0.0.2-ee7cb16-393 → 0.0.2-ef82317-831

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