@etherisc/gif-next 0.0.2-f7eda15-119 → 0.0.2-f7fa064-035

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