@etherisc/gif-next 0.0.2-b72409c-493 → 0.0.2-b7eedf9-238

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