@etherisc/gif-next 0.0.2-ff8087d-237 → 0.0.2-ffa91a6-022

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