@etherisc/gif-next 0.0.2-d39f345-355 → 0.0.2-d3e3d51-378

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