@etherisc/gif-next 0.0.2-b28f7c7-340 → 0.0.2-b312c9a-831

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