@etherisc/gif-next 0.0.2-c96ba91-007 → 0.0.2-c96eaf8-757

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (635) hide show
  1. package/README.md +54 -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 +1526 -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/Product.sol/Product.json → distribution/Distribution.sol/Distribution.json} +361 -322
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1502 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +842 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +282 -208
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +206 -305
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +272 -1967
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +269 -79
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +397 -2762
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +773 -359
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +352 -225
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +115 -82
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3469 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +10 -118
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  74. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1163 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  84. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → oracle/IOracleService.sol/IOracleService.json} +301 -256
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1055 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  92. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +298 -222
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1466 -0
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +818 -0
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +907 -0
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  102. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +294 -302
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1182 -0
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +1218 -0
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1589 -0
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +758 -0
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +852 -0
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → product/BasicProduct.sol/BasicProduct.json} +347 -386
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1331 -0
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  124. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IApplicationService.sol/IApplicationService.json} +179 -202
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +788 -0
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +800 -0
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  130. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +146 -153
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +80 -64
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1300 -0
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +794 -0
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  144. package/artifacts/contracts/product/Product.sol/Product.json +1238 -0
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +182 -28
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +199 -149
  155. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/Registry.sol/Registry.json +443 -43
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +372 -97
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  165. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  173. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +143 -117
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1704 -0
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +816 -0
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +100 -113
  180. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  181. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +180 -54
  182. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  184. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  185. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +205 -198
  186. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  188. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  190. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  192. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  194. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  196. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  198. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IService.sol/IService.json +96 -19
  200. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  201. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  202. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +977 -0
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  207. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  211. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  215. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  216. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -22
  218. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  219. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  220. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Service.sol/Service.json +103 -21
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  223. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +148 -13
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  226. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +387 -0
  230. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/Staking.sol/Staking.json +1991 -0
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +773 -0
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  246. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  247. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  250. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  254. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  256. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  258. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  276. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  282. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  284. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  286. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  288. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  290. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  292. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  294. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  296. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  297. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  298. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  300. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  302. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  303. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  304. package/contracts/authorization/AccessAdmin.sol +591 -0
  305. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  306. package/contracts/authorization/Authorization.sol +218 -0
  307. package/contracts/authorization/IAccess.sol +48 -0
  308. package/contracts/authorization/IAccessAdmin.sol +136 -0
  309. package/contracts/authorization/IAuthorization.sol +54 -0
  310. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  311. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  312. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  313. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  314. package/contracts/distribution/BasicDistribution.sol +138 -0
  315. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  316. package/contracts/{components → distribution}/Distribution.sol +177 -162
  317. package/contracts/distribution/DistributionService.sol +322 -0
  318. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  319. package/contracts/distribution/IDistributionComponent.sol +52 -0
  320. package/contracts/{instance/service → distribution}/IDistributionService.sol +35 -38
  321. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +30 -31
  322. package/contracts/instance/IInstance.sol +55 -67
  323. package/contracts/instance/IInstanceService.sol +50 -30
  324. package/contracts/instance/Instance.sol +160 -233
  325. package/contracts/instance/InstanceAdmin.sol +266 -0
  326. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  327. package/contracts/instance/InstanceReader.sol +180 -62
  328. package/contracts/instance/InstanceService.sol +307 -335
  329. package/contracts/instance/InstanceServiceManager.sol +12 -26
  330. package/contracts/instance/InstanceStore.sol +277 -0
  331. package/contracts/instance/base/BalanceStore.sol +123 -0
  332. package/contracts/instance/base/Cloneable.sol +28 -0
  333. package/contracts/instance/base/ObjectCounter.sol +21 -0
  334. package/contracts/instance/base/ObjectLifecycle.sol +105 -0
  335. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  336. package/contracts/instance/module/IAccess.sol +5 -13
  337. package/contracts/instance/module/IBundle.sol +8 -9
  338. package/contracts/instance/module/IComponents.sol +20 -9
  339. package/contracts/instance/module/IDistribution.sol +6 -6
  340. package/contracts/instance/module/IPolicy.sol +29 -17
  341. package/contracts/instance/module/IRisk.sol +1 -1
  342. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  343. package/contracts/oracle/BasicOracle.sol +48 -0
  344. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  345. package/contracts/oracle/IOracle.sol +36 -0
  346. package/contracts/oracle/IOracleComponent.sol +33 -0
  347. package/contracts/oracle/IOracleService.sol +65 -0
  348. package/contracts/oracle/Oracle.sol +166 -0
  349. package/contracts/oracle/OracleService.sol +278 -0
  350. package/contracts/oracle/OracleServiceManager.sol +39 -0
  351. package/contracts/pool/BasicPool.sol +166 -0
  352. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  353. package/contracts/pool/BundleService.sol +436 -0
  354. package/contracts/pool/BundleServiceManager.sol +39 -0
  355. package/contracts/pool/IBundleService.sol +133 -0
  356. package/contracts/pool/IPoolComponent.sol +58 -0
  357. package/contracts/pool/IPoolService.sol +147 -0
  358. package/contracts/pool/Pool.sol +328 -0
  359. package/contracts/pool/PoolService.sol +518 -0
  360. package/contracts/pool/PoolServiceManager.sol +39 -0
  361. package/contracts/product/ApplicationService.sol +250 -0
  362. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  363. package/contracts/product/BasicProduct.sol +52 -0
  364. package/contracts/product/BasicProductAuthorization.sol +43 -0
  365. package/contracts/product/ClaimService.sol +416 -0
  366. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  367. package/contracts/{instance/service → product}/IApplicationService.sol +16 -35
  368. package/contracts/product/IClaimService.sol +100 -0
  369. package/contracts/product/IPolicyService.sol +84 -0
  370. package/contracts/product/IPricingService.sol +39 -0
  371. package/contracts/product/IProductComponent.sol +40 -0
  372. package/contracts/product/IProductService.sol +34 -0
  373. package/contracts/product/PolicyService.sol +597 -0
  374. package/contracts/product/PolicyServiceManager.sol +39 -0
  375. package/contracts/product/PricingService.sol +304 -0
  376. package/contracts/product/PricingServiceManager.sol +39 -0
  377. package/contracts/product/Product.sol +413 -0
  378. package/contracts/product/ProductService.sol +99 -0
  379. package/contracts/product/ProductServiceManager.sol +39 -0
  380. package/contracts/registry/ChainNft.sol +8 -1
  381. package/contracts/registry/IRegistry.sol +59 -26
  382. package/contracts/registry/IRegistryService.sol +44 -42
  383. package/contracts/registry/Registry.sol +234 -125
  384. package/contracts/registry/RegistryAdmin.sol +365 -0
  385. package/contracts/registry/RegistryService.sol +70 -101
  386. package/contracts/registry/RegistryServiceManager.sol +23 -32
  387. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  388. package/contracts/registry/ReleaseRegistry.sol +485 -0
  389. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  390. package/contracts/registry/TokenRegistry.sol +261 -62
  391. package/contracts/shared/Component.sol +287 -0
  392. package/contracts/shared/ComponentService.sol +639 -0
  393. package/contracts/shared/ComponentServiceManager.sol +35 -0
  394. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  395. package/contracts/{components → shared}/IComponent.sol +27 -30
  396. package/contracts/shared/IComponentService.sol +108 -0
  397. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  398. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  399. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  400. package/contracts/shared/INftOwnable.sol +2 -2
  401. package/contracts/shared/IPolicyHolder.sol +29 -10
  402. package/contracts/shared/IRegistryLinked.sol +0 -1
  403. package/contracts/shared/IService.sol +15 -8
  404. package/contracts/shared/InitializableCustom.sol +177 -0
  405. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
  406. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  407. package/contracts/shared/KeyValueStore.sol +131 -0
  408. package/contracts/shared/Lifecycle.sol +77 -0
  409. package/contracts/shared/NftIdSet.sol +65 -0
  410. package/contracts/shared/NftOwnable.sol +5 -18
  411. package/contracts/shared/PolicyHolder.sol +41 -23
  412. package/contracts/shared/Registerable.sol +13 -12
  413. package/contracts/shared/RegistryLinked.sol +0 -5
  414. package/contracts/shared/Service.sol +47 -23
  415. package/contracts/shared/TokenHandler.sol +54 -7
  416. package/contracts/staking/IStaking.sol +167 -0
  417. package/contracts/staking/IStakingService.sol +160 -0
  418. package/contracts/staking/StakeManagerLib.sol +206 -0
  419. package/contracts/staking/Staking.sol +496 -0
  420. package/contracts/staking/StakingLifecycle.sol +23 -0
  421. package/contracts/staking/StakingManager.sol +50 -0
  422. package/contracts/staking/StakingReader.sol +183 -0
  423. package/contracts/staking/StakingService.sol +407 -0
  424. package/contracts/staking/StakingServiceManager.sol +44 -0
  425. package/contracts/staking/StakingStore.sol +605 -0
  426. package/contracts/staking/TargetManagerLib.sol +207 -0
  427. package/contracts/{types → type}/AddressSet.sol +1 -1
  428. package/contracts/type/Amount.sol +135 -0
  429. package/contracts/{types → type}/Blocknumber.sol +26 -3
  430. package/contracts/{types → type}/ClaimId.sol +25 -2
  431. package/contracts/{types → type}/Fee.sol +33 -24
  432. package/contracts/{types → type}/NftId.sol +14 -16
  433. package/contracts/{types → type}/NftIdSet.sol +2 -2
  434. package/contracts/type/ObjectType.sol +271 -0
  435. package/contracts/{types → type}/PayoutId.sol +33 -5
  436. package/contracts/{types → type}/Referral.sol +2 -1
  437. package/contracts/type/RequestId.sol +75 -0
  438. package/contracts/{types → type}/RiskId.sol +1 -1
  439. package/contracts/type/RoleId.sol +174 -0
  440. package/contracts/{types → type}/Seconds.sol +40 -1
  441. package/contracts/type/Selector.sol +102 -0
  442. package/contracts/{types → type}/StateId.sol +33 -4
  443. package/contracts/type/String.sol +53 -0
  444. package/contracts/{types → type}/Timestamp.sol +21 -2
  445. package/contracts/{types → type}/UFixed.sol +34 -9
  446. package/contracts/{types → type}/Version.sol +4 -2
  447. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  448. package/contracts/{shared → upgradeability}/ProxyManager.sol +36 -7
  449. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  450. package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
  451. package/package.json +8 -5
  452. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  453. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  454. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  455. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  456. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  457. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  458. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  459. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  460. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  461. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  462. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  463. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  464. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  465. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  466. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1311
  467. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  468. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  469. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  470. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  471. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  472. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  473. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  474. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  475. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  476. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  477. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  478. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  479. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
  481. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  483. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
  485. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  487. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  488. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  489. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  490. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  491. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  492. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1732
  493. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  494. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  495. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  497. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -409
  499. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -428
  503. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  504. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
  506. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  508. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -824
  510. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  511. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -657
  512. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  514. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  515. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  516. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  517. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  518. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  519. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  520. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  521. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  522. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  523. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  524. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  525. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  526. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  527. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  528. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  529. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  530. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  531. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  532. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  533. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  534. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  535. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  536. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  537. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  538. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  539. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  540. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  541. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  542. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  543. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  544. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  545. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  546. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  547. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  548. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  550. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  551. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  552. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  554. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  556. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  557. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  558. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  559. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  560. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  561. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  562. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  563. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  564. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  565. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  566. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  568. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  569. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  570. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  571. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  572. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  573. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  574. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  575. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  576. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  577. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  578. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  579. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  581. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  582. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  583. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  585. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  587. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  588. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  589. package/contracts/components/Component.sol +0 -251
  590. package/contracts/components/IDistributionComponent.sol +0 -71
  591. package/contracts/components/IPoolComponent.sol +0 -113
  592. package/contracts/components/IProductComponent.sol +0 -40
  593. package/contracts/components/Pool.sol +0 -299
  594. package/contracts/components/Product.sol +0 -293
  595. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  596. package/contracts/instance/Cloneable.sol +0 -51
  597. package/contracts/instance/InstanceAccessManager.sol +0 -522
  598. package/contracts/instance/base/ComponentService.sol +0 -134
  599. package/contracts/instance/base/KeyValueStore.sol +0 -175
  600. package/contracts/instance/base/Lifecycle.sol +0 -109
  601. package/contracts/instance/module/ISetup.sol +0 -33
  602. package/contracts/instance/module/ITreasury.sol +0 -23
  603. package/contracts/instance/service/ApplicationService.sol +0 -350
  604. package/contracts/instance/service/BundleService.sol +0 -336
  605. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  606. package/contracts/instance/service/ClaimService.sol +0 -151
  607. package/contracts/instance/service/DistributionService.sol +0 -467
  608. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  609. package/contracts/instance/service/IBundleService.sol +0 -62
  610. package/contracts/instance/service/IClaimService.sol +0 -61
  611. package/contracts/instance/service/IPolicyService.sol +0 -72
  612. package/contracts/instance/service/IPoolService.sol +0 -35
  613. package/contracts/instance/service/IProductService.sol +0 -40
  614. package/contracts/instance/service/PolicyService.sol +0 -403
  615. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  616. package/contracts/instance/service/PoolService.sol +0 -220
  617. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  618. package/contracts/instance/service/ProductService.sol +0 -241
  619. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  620. package/contracts/registry/RegistryAccessManager.sol +0 -216
  621. package/contracts/registry/ReleaseManager.sol +0 -322
  622. package/contracts/shared/ContractDeployerLib.sol +0 -72
  623. package/contracts/test/TestFee.sol +0 -25
  624. package/contracts/test/TestRegisterable.sol +0 -18
  625. package/contracts/test/TestRoleId.sol +0 -14
  626. package/contracts/test/TestService.sol +0 -25
  627. package/contracts/test/TestToken.sol +0 -26
  628. package/contracts/test/TestVersion.sol +0 -44
  629. package/contracts/test/TestVersionable.sol +0 -17
  630. package/contracts/types/ChainId.sol +0 -38
  631. package/contracts/types/NumberId.sol +0 -52
  632. package/contracts/types/ObjectType.sol +0 -157
  633. package/contracts/types/RoleId.sol +0 -97
  634. /package/contracts/{types → type}/DistributorType.sol +0 -0
  635. /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().getNftId(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
-
80
- clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
81
- Clones.clone(_masterOzAccessManager));
82
106
 
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));
107
+ // create instance admin and instance
108
+ InstanceAdmin instanceAdmin = _createInstanceAdmin();
109
+ clonedInstance = _createInstance(instanceAdmin, instanceOwner);
88
110
 
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().getNftId(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().getNftId(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().getNftId(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().getNftId(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
+ address(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
+ initializer
426
+ virtual override
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);
435
+
436
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
437
+ _stakingService = IStakingService(_getServiceAddress(STAKING()));
469
438
 
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);
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
  }