@etherisc/gif-next 0.0.2-d02cb80-460 → 0.0.2-d0b1ffb-653

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