@etherisc/gif-next 0.0.2-a733491-751 → 0.0.2-a78920e-322

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