@etherisc/gif-next 0.0.2-93de5de-423 → 0.0.2-941d319-710

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 (723) hide show
  1. package/README.md +139 -93
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -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 +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → distribution/Distribution.sol/Distribution.json} +368 -362
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +930 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +848 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → distribution/IDistributionService.sol/IDistributionService.json} +591 -696
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +650 -1982
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +666 -82
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +649 -2725
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1983 -723
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +610 -317
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +202 -123
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3792 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  102. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  103. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  106. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  107. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  119. package/artifacts/contracts/{components/Component.sol/Component.json → oracle/Oracle.sol/Oracle.json} +312 -292
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  125. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +486 -566
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  135. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +401 -383
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  138. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  139. package/artifacts/contracts/pool/Pool.sol/Pool.json +1025 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  141. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  151. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +455 -542
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +415 -73
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → product/IPricingService.sol/IPricingService.json} +336 -306
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  167. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +520 -310
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  169. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IRiskService.sol/IRiskService.json} +285 -192
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  180. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  181. package/artifacts/contracts/product/Product.sol/Product.json +1117 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +515 -31
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +315 -122
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  196. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  197. package/artifacts/contracts/registry/Registry.sol/Registry.json +999 -124
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2147 -0
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  201. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1061 -0
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +389 -257
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  205. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +213 -110
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  215. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +360 -137
  216. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  217. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/Component.sol/Component.json} +338 -174
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  231. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +248 -131
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +101 -20
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +38 -10
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +163 -3
  246. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  248. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IService.sol/IService.json +187 -17
  250. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  251. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  252. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +795 -0
  254. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  255. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +47 -70
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +145 -100
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +172 -104
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2360 -0
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  280. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  281. package/artifacts/contracts/staking/Staking.sol/Staking.json +2820 -0
  282. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  284. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +858 -0
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +544 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2637 -0
  296. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +657 -0
  298. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  299. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  300. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  302. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  304. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  306. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  308. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  310. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  312. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  314. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  315. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  316. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  318. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  319. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  320. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  322. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  324. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  326. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  328. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  330. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  332. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  334. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  336. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  338. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  340. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  342. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  344. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  346. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  348. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  350. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  351. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  352. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  354. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  356. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  357. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  358. package/contracts/accounting/AccountingService.sol +274 -0
  359. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  360. package/contracts/accounting/IAccountingService.sol +47 -0
  361. package/contracts/authorization/AccessAdmin.sol +780 -0
  362. package/contracts/authorization/AccessAdminLib.sol +396 -0
  363. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  364. package/contracts/authorization/Authorization.sol +169 -0
  365. package/contracts/authorization/IAccess.sol +67 -0
  366. package/contracts/authorization/IAccessAdmin.sol +144 -0
  367. package/contracts/authorization/IAuthorization.sol +26 -0
  368. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  369. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  370. package/contracts/distribution/BasicDistribution.sol +141 -0
  371. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  372. package/contracts/distribution/Distribution.sol +247 -0
  373. package/contracts/distribution/DistributionService.sol +448 -0
  374. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  375. package/contracts/distribution/IDistributionComponent.sol +45 -0
  376. package/contracts/distribution/IDistributionService.sol +115 -0
  377. package/contracts/examples/fire/DamageLevel.sol +59 -0
  378. package/contracts/examples/fire/FirePool.sol +86 -0
  379. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  380. package/contracts/examples/fire/FireProduct.sol +433 -0
  381. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  382. package/contracts/examples/fire/FireUSD.sol +26 -0
  383. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  384. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  385. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  386. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  387. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  388. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  389. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  390. package/contracts/instance/BundleSet.sol +130 -0
  391. package/contracts/instance/IInstance.sol +119 -66
  392. package/contracts/instance/IInstanceService.sol +84 -26
  393. package/contracts/instance/Instance.sol +256 -200
  394. package/contracts/instance/InstanceAdmin.sol +383 -0
  395. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  396. package/contracts/instance/InstanceReader.sol +530 -191
  397. package/contracts/instance/InstanceService.sol +385 -361
  398. package/contracts/instance/InstanceServiceManager.sol +14 -29
  399. package/contracts/instance/InstanceStore.sol +298 -0
  400. package/contracts/instance/RiskSet.sol +126 -0
  401. package/contracts/instance/base/BalanceStore.sol +121 -0
  402. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  403. package/contracts/instance/base/ObjectCounter.sol +20 -0
  404. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  405. package/contracts/instance/base/ObjectSet.sol +77 -0
  406. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  407. package/contracts/instance/module/IBundle.sol +10 -9
  408. package/contracts/instance/module/IComponents.sol +62 -0
  409. package/contracts/instance/module/IDistribution.sol +25 -10
  410. package/contracts/instance/module/IPolicy.sol +78 -20
  411. package/contracts/instance/module/IRisk.sol +6 -1
  412. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  413. package/contracts/oracle/BasicOracle.sol +45 -0
  414. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  415. package/contracts/oracle/IOracle.sol +41 -0
  416. package/contracts/oracle/IOracleComponent.sol +33 -0
  417. package/contracts/oracle/IOracleService.sol +66 -0
  418. package/contracts/oracle/Oracle.sol +154 -0
  419. package/contracts/oracle/OracleService.sol +310 -0
  420. package/contracts/oracle/OracleServiceManager.sol +39 -0
  421. package/contracts/pool/BasicPool.sol +162 -0
  422. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  423. package/contracts/pool/BundleService.sol +386 -0
  424. package/contracts/pool/BundleServiceManager.sol +39 -0
  425. package/contracts/pool/IBundleService.sol +116 -0
  426. package/contracts/pool/IPoolComponent.sol +62 -0
  427. package/contracts/pool/IPoolService.sol +170 -0
  428. package/contracts/pool/Pool.sol +333 -0
  429. package/contracts/pool/PoolLib.sol +341 -0
  430. package/contracts/pool/PoolService.sol +614 -0
  431. package/contracts/pool/PoolServiceManager.sol +39 -0
  432. package/contracts/product/ApplicationService.sol +327 -0
  433. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  434. package/contracts/product/BasicProduct.sol +49 -0
  435. package/contracts/product/BasicProductAuthorization.sol +63 -0
  436. package/contracts/product/ClaimService.sol +630 -0
  437. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  438. package/contracts/{instance/service → product}/IApplicationService.sol +42 -36
  439. package/contracts/product/IClaimService.sol +136 -0
  440. package/contracts/product/IPolicyService.sol +102 -0
  441. package/contracts/product/IPricingService.sol +40 -0
  442. package/contracts/product/IProductComponent.sol +62 -0
  443. package/contracts/product/IRiskService.sol +48 -0
  444. package/contracts/product/PolicyService.sol +645 -0
  445. package/contracts/product/PolicyServiceLib.sol +139 -0
  446. package/contracts/product/PolicyServiceManager.sol +39 -0
  447. package/contracts/product/PricingService.sol +306 -0
  448. package/contracts/product/PricingServiceManager.sol +39 -0
  449. package/contracts/product/Product.sol +493 -0
  450. package/contracts/product/RiskService.sol +190 -0
  451. package/contracts/product/RiskServiceManager.sol +39 -0
  452. package/contracts/registry/ChainNft.sol +83 -36
  453. package/contracts/registry/IRegistry.sol +106 -33
  454. package/contracts/registry/IRegistryService.sol +36 -41
  455. package/contracts/registry/IRelease.sol +29 -0
  456. package/contracts/registry/ITransferInterceptor.sol +1 -1
  457. package/contracts/registry/Registry.sol +481 -209
  458. package/contracts/registry/RegistryAdmin.sol +188 -0
  459. package/contracts/registry/RegistryAuthorization.sol +309 -0
  460. package/contracts/registry/RegistryService.sol +90 -132
  461. package/contracts/registry/RegistryServiceManager.sol +23 -32
  462. package/contracts/registry/ReleaseAdmin.sol +195 -0
  463. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  464. package/contracts/registry/ReleaseRegistry.sol +525 -0
  465. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  466. package/contracts/registry/TokenRegistry.sol +265 -64
  467. package/contracts/shared/Component.sol +214 -0
  468. package/contracts/shared/ComponentService.sol +687 -0
  469. package/contracts/shared/ComponentServiceManager.sol +38 -0
  470. package/contracts/shared/ContractLib.sol +312 -0
  471. package/contracts/shared/IComponent.sol +58 -0
  472. package/contracts/shared/IComponentService.sol +111 -0
  473. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  474. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  475. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  476. package/contracts/shared/INftOwnable.sol +6 -2
  477. package/contracts/shared/IPolicyHolder.sol +23 -14
  478. package/contracts/shared/IRegisterable.sol +22 -1
  479. package/contracts/shared/IRegistryLinked.sol +0 -1
  480. package/contracts/shared/IService.sol +12 -5
  481. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  482. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  483. package/contracts/shared/KeyValueStore.sol +131 -0
  484. package/contracts/shared/Lifecycle.sol +88 -0
  485. package/contracts/shared/NftIdSet.sol +65 -0
  486. package/contracts/shared/NftOwnable.sol +36 -27
  487. package/contracts/shared/PolicyHolder.sol +23 -41
  488. package/contracts/shared/Registerable.sol +51 -19
  489. package/contracts/shared/RegistryLinked.sol +9 -19
  490. package/contracts/shared/Service.sol +38 -29
  491. package/contracts/shared/TokenHandler.sol +327 -12
  492. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  493. package/contracts/staking/IStaking.sol +264 -0
  494. package/contracts/staking/IStakingService.sol +127 -0
  495. package/contracts/staking/Staking.sol +746 -0
  496. package/contracts/staking/StakingLib.sol +195 -0
  497. package/contracts/staking/StakingLifecycle.sol +23 -0
  498. package/contracts/staking/StakingManager.sol +51 -0
  499. package/contracts/staking/StakingReader.sol +151 -0
  500. package/contracts/staking/StakingService.sol +321 -0
  501. package/contracts/staking/StakingServiceManager.sol +46 -0
  502. package/contracts/staking/StakingStore.sol +973 -0
  503. package/contracts/staking/TargetManagerLib.sol +211 -0
  504. package/contracts/{types → type}/AddressSet.sol +1 -1
  505. package/contracts/type/Amount.sol +154 -0
  506. package/contracts/{types → type}/Blocknumber.sol +36 -12
  507. package/contracts/type/ChainId.sol +101 -0
  508. package/contracts/{types → type}/ClaimId.sol +31 -3
  509. package/contracts/type/Fee.sol +66 -0
  510. package/contracts/{types → type}/Key32.sol +2 -2
  511. package/contracts/type/Key32Set.sol +62 -0
  512. package/contracts/{types → type}/NftId.sol +28 -15
  513. package/contracts/{types → type}/NftIdSet.sol +2 -2
  514. package/contracts/type/ObjectType.sol +307 -0
  515. package/contracts/type/PayoutId.sol +82 -0
  516. package/contracts/{types → type}/Referral.sol +6 -1
  517. package/contracts/type/RequestId.sol +75 -0
  518. package/contracts/type/RiskId.sol +75 -0
  519. package/contracts/type/RoleId.sol +180 -0
  520. package/contracts/type/Seconds.sol +115 -0
  521. package/contracts/type/Selector.sol +107 -0
  522. package/contracts/{types → type}/StateId.sol +48 -4
  523. package/contracts/type/String.sol +65 -0
  524. package/contracts/{types → type}/Timestamp.sol +36 -20
  525. package/contracts/type/UFixed.sol +263 -0
  526. package/contracts/{types → type}/Version.sol +59 -7
  527. package/contracts/{shared → upgradeability}/IVersionable.sol +4 -1
  528. package/contracts/{shared → upgradeability}/ProxyManager.sol +118 -41
  529. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  530. package/contracts/{shared → upgradeability}/Versionable.sol +9 -6
  531. package/package.json +12 -8
  532. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  533. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  534. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  535. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  536. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  537. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  538. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  539. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  540. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  542. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  543. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  544. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  545. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  546. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  547. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  548. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  549. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  550. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  551. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  552. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  553. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  554. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  555. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -254
  556. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  557. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  558. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  559. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -858
  560. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  561. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -657
  562. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  563. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1085
  564. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  565. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  566. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -743
  568. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  570. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -935
  572. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  573. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -677
  574. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  575. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -398
  578. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -480
  580. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  581. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  582. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -336
  583. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  584. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +0 -373
  585. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  586. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1109
  587. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  588. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -717
  589. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -716
  591. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  592. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
  593. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  594. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -766
  595. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  596. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  597. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  598. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  599. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  600. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  601. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  602. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  603. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  604. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  605. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  606. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  607. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  608. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  609. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  610. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  611. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  612. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  613. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  614. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  615. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  616. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  617. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  618. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -510
  619. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  620. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  621. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  622. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  623. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  624. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  625. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  626. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  627. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  628. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  629. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  631. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  632. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  633. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  634. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  635. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  636. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  637. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  638. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  639. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  640. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  641. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  642. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  643. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  644. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  645. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  646. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  647. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  649. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  650. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  651. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  652. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  653. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  654. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  655. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  656. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  657. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  658. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  659. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  660. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  661. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  663. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  665. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  667. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  668. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  669. package/contracts/components/Component.sol +0 -241
  670. package/contracts/components/Distribution.sol +0 -308
  671. package/contracts/components/IComponent.sol +0 -54
  672. package/contracts/components/IDistributionComponent.sol +0 -100
  673. package/contracts/components/IPoolComponent.sol +0 -87
  674. package/contracts/components/IProductComponent.sol +0 -39
  675. package/contracts/components/Pool.sol +0 -254
  676. package/contracts/components/Product.sol +0 -285
  677. package/contracts/instance/BundleManager.sol +0 -125
  678. package/contracts/instance/InstanceAccessManager.sol +0 -297
  679. package/contracts/instance/ObjectManager.sol +0 -84
  680. package/contracts/instance/base/ComponentService.sol +0 -134
  681. package/contracts/instance/base/KeyValueStore.sol +0 -172
  682. package/contracts/instance/base/Lifecycle.sol +0 -100
  683. package/contracts/instance/module/IAccess.sol +0 -47
  684. package/contracts/instance/module/ISetup.sol +0 -47
  685. package/contracts/instance/module/ITreasury.sol +0 -23
  686. package/contracts/instance/service/ApplicationService.sol +0 -268
  687. package/contracts/instance/service/BundleService.sol +0 -298
  688. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  689. package/contracts/instance/service/ClaimService.sol +0 -151
  690. package/contracts/instance/service/DistributionService.sol +0 -277
  691. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  692. package/contracts/instance/service/IBundleService.sol +0 -54
  693. package/contracts/instance/service/IClaimService.sol +0 -61
  694. package/contracts/instance/service/IDistributionService.sol +0 -65
  695. package/contracts/instance/service/IPolicyService.sol +0 -89
  696. package/contracts/instance/service/IPoolService.sol +0 -20
  697. package/contracts/instance/service/IProductService.sol +0 -40
  698. package/contracts/instance/service/PolicyService.sol +0 -474
  699. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  700. package/contracts/instance/service/PoolService.sol +0 -109
  701. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  702. package/contracts/instance/service/ProductService.sol +0 -233
  703. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  704. package/contracts/registry/RegistryAccessManager.sol +0 -216
  705. package/contracts/registry/ReleaseManager.sol +0 -322
  706. package/contracts/shared/ContractDeployerLib.sol +0 -72
  707. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  708. package/contracts/test/TestFee.sol +0 -25
  709. package/contracts/test/TestRegisterable.sol +0 -18
  710. package/contracts/test/TestRoleId.sol +0 -14
  711. package/contracts/test/TestService.sol +0 -25
  712. package/contracts/test/TestToken.sol +0 -26
  713. package/contracts/test/TestVersion.sol +0 -44
  714. package/contracts/test/TestVersionable.sol +0 -17
  715. package/contracts/types/ChainId.sol +0 -38
  716. package/contracts/types/Fee.sol +0 -56
  717. package/contracts/types/NumberId.sol +0 -52
  718. package/contracts/types/ObjectType.sol +0 -156
  719. package/contracts/types/PayoutId.sol +0 -54
  720. package/contracts/types/RiskId.sol +0 -43
  721. package/contracts/types/RoleId.sol +0 -90
  722. package/contracts/types/UFixed.sol +0 -325
  723. /package/contracts/{types → type}/DistributorType.sol +0 -0
@@ -3,318 +3,373 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
5
 
6
- import {Instance} from "./Instance.sol";
6
+ import {IAccess} from "../authorization/IAccess.sol";
7
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
8
+ import {IComponentService} from "../shared/IComponentService.sol";
7
9
  import {IInstance} from "./IInstance.sol";
8
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
9
10
  import {IInstanceService} from "./IInstanceService.sol";
10
- import {InstanceReader} from "./InstanceReader.sol";
11
- import {BundleManager} from "./BundleManager.sol";
12
11
  import {IRegistry} from "../registry/IRegistry.sol";
13
12
  import {IRegistryService} from "../registry/IRegistryService.sol";
14
- import {ChainNft} from "../registry/ChainNft.sol";
15
- import {Service} from "../../contracts/shared/Service.sol";
16
- import {IService} from "../shared/IService.sol";
17
- import {NftId} from "../../contracts/types/NftId.sol";
18
- import {RoleId} from "../types/RoleId.sol";
19
- import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
20
- import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
21
- import {IDistributionComponent} from "../components/IDistributionComponent.sol";
22
- import {IPoolComponent} from "../components/IPoolComponent.sol";
23
- import {IProductComponent} from "../components/IProductComponent.sol";
13
+ import {IStakingService} from "../staking/IStakingService.sol";
14
+
15
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
16
+ import {Amount} from "../type/Amount.sol";
17
+ import {BundleSet} from "./BundleSet.sol";
18
+ import {Instance} from "./Instance.sol";
19
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
20
+ import {InstanceReader} from "./InstanceReader.sol";
21
+ import {InstanceStore} from "./InstanceStore.sol";
22
+ import {NftId} from "../type/NftId.sol";
23
+ import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
24
+ import {RiskSet} from "./RiskSet.sol";
25
+ import {RoleId} from "../type/RoleId.sol";
26
+ import {Seconds} from "../type/Seconds.sol";
27
+ import {Service} from "../shared/Service.sol";
28
+ import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
29
+ import {UFixed} from "../type/UFixed.sol";
30
+ import {VersionPart} from "../type/Version.sol";
31
+
24
32
 
25
33
  contract InstanceService is
26
34
  Service,
27
35
  IInstanceService
28
36
  {
29
37
 
30
- address internal _masterInstanceAccessManager;
38
+ // TODO update to real hash when instance is stable
39
+ bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
40
+
41
+ IRegistryService internal _registryService;
42
+ IStakingService internal _stakingService;
43
+ IComponentService internal _componentService;
44
+
45
+ address internal _masterAccessManager;
46
+ address internal _masterInstanceAdmin;
31
47
  address internal _masterInstance;
32
48
  address internal _masterInstanceReader;
33
- address internal _masterInstanceBundleManager;
49
+ address internal _masterInstanceBundleSet;
50
+ address internal _masterInstanceRiskSet;
51
+ address internal _masterInstanceStore;
34
52
 
35
- // TODO update to real hash when instance is stable
36
- bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
37
53
 
38
- modifier onlyInstanceOwner(NftId instanceNftId) {
39
- IRegistry registry = getRegistry();
40
- ChainNft chainNft = ChainNft(registry.getChainNftAddress());
41
-
42
- if( msg.sender != chainNft.ownerOf(instanceNftId.toInt())) {
43
- revert ErrorInstanceServiceNotInstanceOwner(msg.sender, instanceNftId);
44
- }
54
+ modifier onlyInstance() {
55
+ _checkInstance(msg.sender, getRelease());
45
56
  _;
46
57
  }
47
58
 
48
- modifier onlyRegisteredService() {
49
- address caller = msg.sender;
50
- if (! getRegistry().isRegisteredService(caller)) {
51
- revert ErrorInstanceServiceRequestUnauhorized(caller);
52
- }
53
- _;
59
+
60
+ /// @inheritdoc IInstanceService
61
+ function createRole(
62
+ string memory roleName,
63
+ RoleId adminRoleId,
64
+ uint32 maxMemberCount
65
+ )
66
+ external
67
+ restricted()
68
+ onlyInstance()
69
+ returns (RoleId roleId)
70
+ {
71
+ IInstance instance = IInstance(msg.sender);
72
+ roleId = instance.getInstanceAdmin().createRole(
73
+ roleName,
74
+ adminRoleId,
75
+ maxMemberCount);
54
76
  }
55
77
 
56
- function createInstanceClone()
57
- external
58
- returns (
59
- InstanceAccessManager clonedAccessManager,
60
- Instance clonedInstance,
61
- NftId clonedInstanceNftId,
62
- InstanceReader clonedInstanceReader,
63
- BundleManager clonedBundleManager
64
- )
78
+
79
+ /// @inheritdoc IInstanceService
80
+ function setRoleActive(RoleId roleId, bool active)
81
+ external
82
+ restricted()
83
+ onlyInstance()
65
84
  {
66
- address instanceOwner = msg.sender;
67
- IRegistry registry = getRegistry();
68
- address registryAddress = address(registry);
69
- NftId registryNftId = registry.getNftId(registryAddress);
70
- address registryServiceAddress = registry.getServiceAddress(REGISTRY(), getMajorVersion());
71
- IRegistryService registryService = IRegistryService(registryServiceAddress);
72
-
73
- // initially set the authority of the access managar to this (being the instance service).
74
- // This will allow the instance service to bootstrap the authorizations of the instance
75
- // and then transfer the ownership of the access manager to the instance owner once everything is setup
76
- clonedAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
77
- clonedAccessManager.initialize(address(this));
78
-
79
- clonedInstance = Instance(Clones.clone(_masterInstance));
80
- clonedInstance.initialize(address(clonedAccessManager), registryAddress, registryNftId, msg.sender);
81
-
82
- clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
83
- clonedInstanceReader.initialize(registryAddress, address(clonedInstance));
84
- clonedInstance.setInstanceReader(clonedInstanceReader);
85
+ IInstance instance = IInstance(msg.sender);
86
+ instance.getInstanceAdmin().setRoleActive(roleId, active);
87
+ }
85
88
 
86
- clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
87
- clonedBundleManager.initialize(address(clonedAccessManager), registryAddress, address(clonedInstance));
88
- clonedInstance.setBundleManager(clonedBundleManager);
89
89
 
90
- // TODO amend setters with instance specific , policy manager ...
90
+ /// @inheritdoc IInstanceService
91
+ function grantRole(RoleId roleId, address account)
92
+ external
93
+ restricted()
94
+ onlyInstance()
95
+ {
96
+ IInstance instance = IInstance(msg.sender);
97
+ instance.getInstanceAdmin().grantRole(roleId, account);
98
+ }
91
99
 
92
- _grantInitialAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
93
100
 
94
- // to complete setup switch instance ownership to the instance owner
95
- // TODO: use a role less powerful than admin, maybe INSTANCE_ADMIN (does not exist yet)
96
- clonedAccessManager.grantRole(ADMIN_ROLE(), instanceOwner);
97
- clonedAccessManager.revokeRole(ADMIN_ROLE(), address(this));
101
+ /// @inheritdoc IInstanceService
102
+ function revokeRole(RoleId roleId, address account)
103
+ external
104
+ restricted()
105
+ onlyInstance()
106
+ {
107
+ IInstance instance = IInstance(msg.sender);
108
+ instance.getInstanceAdmin().revokeRole(roleId, account);
109
+ }
98
110
 
99
- IRegistry.ObjectInfo memory info = registryService.registerInstance(clonedInstance, instanceOwner);
100
- clonedInstanceNftId = info.nftId;
101
- // clonedInstance.linkToRegisteredNftId();
102
111
 
103
- emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
112
+ /// @inheritdoc IInstanceService
113
+ function createTarget(address target, string memory name)
114
+ external
115
+ restricted()
116
+ onlyInstance()
117
+ returns (RoleId contractRoleId)
118
+ {
119
+ IInstance instance = IInstance(msg.sender);
120
+ return instance.getInstanceAdmin().createTarget(target, name);
104
121
  }
105
122
 
106
- function _grantInitialAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
107
- _createGifRoles(clonedAccessManager);
108
- _createGifTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
109
- _grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
110
- _grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
111
- _grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
112
- _grantApplicationServiceAuthorizations(clonedAccessManager, clonedInstance);
113
- _grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
114
- _grantClaimServiceAuthorizations(clonedAccessManager, clonedInstance);
115
- _grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
116
- _grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
123
+
124
+ /// @inheritdoc IInstanceService
125
+ function authorizeFunctions(
126
+ address target,
127
+ RoleId roleId,
128
+ IAccess.FunctionInfo[] memory functions
129
+ )
130
+ external
131
+ restricted()
132
+ onlyInstance()
133
+ {
134
+ IInstance instance = IInstance(msg.sender);
135
+ return instance.getInstanceAdmin().authorizeFunctions(target, roleId, functions);
117
136
  }
118
137
 
119
- function _createGifRoles(InstanceAccessManager clonedAccessManager) internal {
120
- clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole");
121
- clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole");
122
- clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole");
123
-
124
- clonedAccessManager.createGifRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
125
- clonedAccessManager.createGifRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
126
- clonedAccessManager.createGifRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
127
- clonedAccessManager.createGifRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
128
- clonedAccessManager.createGifRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
129
- clonedAccessManager.createGifRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
130
- clonedAccessManager.createGifRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
131
- clonedAccessManager.createGifRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
138
+
139
+ /// @inheritdoc IInstanceService
140
+ function unauthorizeFunctions(
141
+ address target,
142
+ IAccess.FunctionInfo[] memory functions
143
+ )
144
+ external
145
+ restricted()
146
+ onlyInstance()
147
+ {
148
+ IInstance instance = IInstance(msg.sender);
149
+ return instance.getInstanceAdmin().unauthorizeFunctions(target, functions);
132
150
  }
133
151
 
134
- function _createGifTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
135
- clonedAccessManager.createGifTarget(address(clonedAccessManager), "InstanceAccessManager");
136
- clonedAccessManager.createGifTarget(address(clonedInstance), "Instance");
137
- clonedAccessManager.createGifTarget(address(clonedBundleManager), "BundleManager");
138
- }
139
152
 
140
- function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
141
- // configure authorization for distribution service on instance
142
- IRegistry registry = getRegistry();
143
- address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
144
- clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
145
- bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
146
- instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
147
- instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
148
- instanceDistributionServiceSelectors[2] = clonedInstance.createDistributorType.selector;
149
- instanceDistributionServiceSelectors[3] = clonedInstance.updateDistributorType.selector;
150
- instanceDistributionServiceSelectors[4] = clonedInstance.updateDistributorTypeState.selector;
151
- instanceDistributionServiceSelectors[5] = clonedInstance.createDistributor.selector;
152
- instanceDistributionServiceSelectors[6] = clonedInstance.updateDistributor.selector;
153
- instanceDistributionServiceSelectors[7] = clonedInstance.updateDistributorState.selector;
154
- instanceDistributionServiceSelectors[8] = clonedInstance.createReferral.selector;
155
- instanceDistributionServiceSelectors[9] = clonedInstance.updateReferral.selector;
156
- instanceDistributionServiceSelectors[10] = clonedInstance.updateReferralState.selector;
157
- clonedAccessManager.setTargetFunctionRole(
158
- "Instance",
159
- instanceDistributionServiceSelectors,
160
- DISTRIBUTION_SERVICE_ROLE());
153
+ /// @inheritdoc IInstanceService
154
+ function setTargetLocked(address target, bool locked)
155
+ external
156
+ virtual
157
+ restricted()
158
+ onlyInstance()
159
+ {
160
+ address instanceAddress = msg.sender;
161
+ IInstance(instanceAddress).getInstanceAdmin().setTargetLocked(target, locked);
161
162
  }
162
163
 
163
- function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
164
- // configure authorization for pool service on instance
165
- address poolServiceAddress = getRegistry().getServiceAddress(POOL(), getMajorVersion());
166
- clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
167
- bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
168
- instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
169
- instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
170
- clonedAccessManager.setTargetFunctionRole(
171
- "Instance",
172
- instancePoolServiceSelectors,
173
- POOL_SERVICE_ROLE());
164
+
165
+ /// @inheritdoc IInstanceService
166
+ function setInstanceLocked(bool locked)
167
+ external
168
+ virtual
169
+ restricted()
170
+ onlyInstance()
171
+ {
172
+ address instanceAddress = msg.sender;
173
+ IInstance(instanceAddress).getInstanceAdmin().setInstanceLocked(locked);
174
+
175
+ emit LogInstanceServiceInstanceLocked(
176
+ getRegistry().getNftIdForAddress(instanceAddress),
177
+ locked);
174
178
  }
175
179
 
176
- function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
177
- // configure authorization for product service on instance
178
- address productServiceAddress = getRegistry().getServiceAddress(PRODUCT(), getMajorVersion());
179
- clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
180
- bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
181
- instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
182
- instanceProductServiceSelectors[1] = clonedInstance.updateProductSetup.selector;
183
- instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
184
- instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
185
- instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
186
- clonedAccessManager.setTargetFunctionRole(
187
- "Instance",
188
- instanceProductServiceSelectors,
189
- PRODUCT_SERVICE_ROLE());
180
+
181
+ /// @inheritdoc IInstanceService
182
+ function createInstance(bool allowAnyToken)
183
+ external
184
+ virtual
185
+ restricted()
186
+ returns (
187
+ IInstance instance,
188
+ NftId instanceNftId
189
+ )
190
+ {
191
+ // tx sender will become instance owner
192
+ address instanceOwner = msg.sender;
193
+
194
+ // create instance admin and instance
195
+ InstanceAdmin instanceAdmin = _cloneNewInstanceAdmin();
196
+ instance = _createInstance(instanceAdmin, instanceOwner, allowAnyToken);
197
+
198
+ // register cloned instance with registry
199
+ instanceNftId = _registryService.registerInstance(
200
+ instance, instanceOwner).nftId;
201
+
202
+ // MUST be set after instance is set up and registered
203
+ IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
204
+ instanceAdmin.completeSetup(
205
+ address(getRegistry()),
206
+ address(instanceAuthorization),
207
+ getRelease(),
208
+ address(instance));
209
+
210
+ // hard checks for newly cloned instance
211
+ assert(address(instance.getRegistry()) == address(getRegistry()));
212
+ assert(instance.getRelease() == getRelease());
213
+
214
+ // register cloned instance as staking target
215
+ _stakingService.createInstanceTarget(
216
+ instanceNftId,
217
+ TargetManagerLib.getDefaultLockingPeriod(),
218
+ TargetManagerLib.getDefaultRewardRate());
219
+
220
+ emit LogInstanceServiceInstanceCreated(
221
+ instanceNftId,
222
+ address(instance));
190
223
  }
191
224
 
192
- function _grantApplicationServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
193
- // configure authorization for application services on instance
194
- address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getMajorVersion());
195
- clonedAccessManager.grantRole(APPLICATION_SERVICE_ROLE(), applicationServiceAddress);
196
- bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
197
- instanceApplicationServiceSelectors[0] = clonedInstance.createApplication.selector;
198
- instanceApplicationServiceSelectors[1] = clonedInstance.updateApplication.selector;
199
- instanceApplicationServiceSelectors[2] = clonedInstance.updateApplicationState.selector;
200
- clonedAccessManager.setTargetFunctionRole(
201
- "Instance",
202
- instanceApplicationServiceSelectors,
203
- APPLICATION_SERVICE_ROLE());
225
+
226
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod)
227
+ external
228
+ virtual
229
+ restricted()
230
+ onlyInstance()
231
+ {
232
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
233
+ _stakingService.setInstanceLockingPeriod(
234
+ instanceNftId,
235
+ stakeLockingPeriod);
204
236
  }
205
237
 
206
- function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
207
- // configure authorization for policy services on instance
208
- address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getMajorVersion());
209
- clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), policyServiceAddress);
210
- bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
211
- instancePolicyServiceSelectors[0] = clonedInstance.updatePolicy.selector;
212
- instancePolicyServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
213
- clonedAccessManager.setTargetFunctionRole(
214
- "Instance",
215
- instancePolicyServiceSelectors,
216
- POLICY_SERVICE_ROLE());
238
+
239
+ function setStakingRewardRate(UFixed rewardRate)
240
+ external
241
+ virtual
242
+ restricted()
243
+ onlyInstance()
244
+ {
245
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
246
+ _stakingService.setInstanceRewardRate(
247
+ instanceNftId,
248
+ rewardRate);
217
249
  }
218
250
 
219
- function _grantClaimServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
220
- // configure authorization for claim/payout services on instance
221
- address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getMajorVersion());
222
- clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), claimServiceAddress);
223
- // TODO add claims function authz
224
- bytes4[] memory instanceClaimServiceSelectors = new bytes4[](0);
225
- // instanceClaimServiceSelectors[0] = clonedInstance.updatePolicy.selector;
226
- // instanceClaimServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
227
- clonedAccessManager.setTargetFunctionRole(
228
- "Instance",
229
- instanceClaimServiceSelectors,
230
- CLAIM_SERVICE_ROLE());
251
+ function setStakingMaxAmount(Amount maxStakedAmount)
252
+ external
253
+ virtual
254
+ restricted()
255
+ onlyInstance()
256
+ {
257
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
258
+ _stakingService.setInstanceMaxStakedAmount(
259
+ instanceNftId,
260
+ maxStakedAmount);
261
+ }
262
+
263
+
264
+ function refillInstanceRewardReserves(address rewardProvider, Amount dipAmount)
265
+ external
266
+ virtual
267
+ restricted()
268
+ onlyInstance()
269
+ returns (Amount newBalance)
270
+ {
271
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
272
+ newBalance = _stakingService.refillInstanceRewardReserves(
273
+ instanceNftId,
274
+ rewardProvider,
275
+ dipAmount);
231
276
  }
232
277
 
233
- function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
234
- // configure authorization for bundle service on instance
235
- address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getMajorVersion());
236
- clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
237
- bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
238
- instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
239
- instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
240
- clonedAccessManager.setTargetFunctionRole(
241
- "Instance",
242
- instanceBundleServiceSelectors,
243
- BUNDLE_SERVICE_ROLE());
244
-
245
- // configure authorization for bundle service on bundle manager
246
- bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
247
- bundleManagerBundleServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
248
- bundleManagerBundleServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
249
- bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
250
- bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
251
- bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
252
- clonedAccessManager.setTargetFunctionRole(
253
- "BundleManager",
254
- bundleManagerBundleServiceSelectors,
255
- BUNDLE_SERVICE_ROLE());
278
+
279
+ function withdrawInstanceRewardReserves(Amount dipAmount)
280
+ external
281
+ virtual
282
+ restricted()
283
+ onlyInstance()
284
+ returns (Amount newBalance)
285
+ {
286
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
287
+ newBalance = _stakingService.withdrawInstanceRewardReserves(
288
+ instanceNftId,
289
+ dipAmount);
256
290
  }
257
291
 
258
- function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
259
- // configure authorization for instance service on instance
260
- address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getMajorVersion());
261
- clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
262
- bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
263
- instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
264
- clonedAccessManager.setTargetFunctionRole(
265
- "Instance",
266
- instanceInstanceServiceSelectors,
267
- INSTANCE_SERVICE_ROLE());
268
-
269
- bytes4[] memory instanceAccessManagerInstanceServiceSelectors = new bytes4[](1);
270
- instanceAccessManagerInstanceServiceSelectors[0] = clonedAccessManager.createGifTarget.selector;
271
- clonedAccessManager.setTargetFunctionRole(
272
- "InstanceAccessManager",
273
- instanceAccessManagerInstanceServiceSelectors,
274
- INSTANCE_SERVICE_ROLE());
292
+
293
+ function upgradeInstanceReader()
294
+ external
295
+ virtual
296
+ restricted()
297
+ onlyInstance()
298
+ {
299
+ address instanceAddress = msg.sender;
300
+ IInstance instance = IInstance(msg.sender);
301
+
302
+ InstanceReader upgradedInstanceReaderClone = InstanceReader(
303
+ Clones.clone(address(_masterInstanceReader)));
304
+
305
+ upgradedInstanceReaderClone.initializeWithInstance(instanceAddress);
306
+ instance.setInstanceReader(upgradedInstanceReaderClone);
307
+
308
+ emit LogInstanceServiceInstanceReaderUpgraded(
309
+ getRegistry().getNftIdForAddress(instanceAddress),
310
+ address(upgradedInstanceReaderClone));
275
311
  }
276
312
 
277
- function setAndRegisterMasterInstance(address instanceAddress)
278
- external
279
- onlyOwner
280
- returns(NftId masterInstanceNftId)
313
+
314
+ function setAndRegisterMasterInstance(address instanceAddress)
315
+ external
316
+ virtual
317
+ onlyOwner()
318
+ returns(NftId masterInstanceNftId)
281
319
  {
282
320
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
283
- if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
284
- if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
285
-
321
+ if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
322
+ if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
323
+ if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
286
324
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
287
325
 
288
326
  IInstance instance = IInstance(instanceAddress);
289
- InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
290
- address accessManagerAddress = address(accessManager);
327
+ address accessManagerAddress = instance.authority();
328
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
329
+ address instanceAdminAddress = address(instanceAdmin);
291
330
  InstanceReader instanceReader = instance.getInstanceReader();
292
331
  address instanceReaderAddress = address(instanceReader);
293
- BundleManager bundleManager = instance.getBundleManager();
294
- address bundleManagerAddress = address(bundleManager);
332
+ BundleSet bundleSet = instance.getBundleSet();
333
+ address bundleSetAddress = address(bundleSet);
334
+ RiskSet riskSet = instance.getRiskSet();
335
+ address riskSetAddress = address(riskSet);
336
+ InstanceStore instanceStore = instance.getInstanceStore();
337
+ address instanceStoreAddress = address(instanceStore);
295
338
 
296
339
  if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
340
+ if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
297
341
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
298
- if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
342
+ if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
343
+ if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
344
+ if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
299
345
 
300
- if(instance.authority() != accessManagerAddress) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
346
+ if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
347
+ if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
348
+ if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
349
+ if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
350
+ if(bundleSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
351
+ if(riskSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
301
352
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
302
- if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
303
353
 
304
- _masterInstanceAccessManager = accessManagerAddress;
354
+ _masterAccessManager = accessManagerAddress;
355
+ _masterInstanceAdmin = instanceAdminAddress;
305
356
  _masterInstance = instanceAddress;
306
357
  _masterInstanceReader = instanceReaderAddress;
307
- _masterInstanceBundleManager = bundleManagerAddress;
358
+ _masterInstanceBundleSet = bundleSetAddress;
359
+ _masterInstanceRiskSet = riskSetAddress;
360
+ _masterInstanceStore = instanceStoreAddress;
308
361
 
309
- IRegistryService registryService = IRegistryService(getRegistry().getServiceAddress(REGISTRY(), getMajorVersion()));
310
362
  IInstance masterInstance = IInstance(_masterInstance);
311
- IRegistry.ObjectInfo memory info = registryService.registerInstance(masterInstance, getOwner());
363
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
312
364
  masterInstanceNftId = info.nftId;
313
-
314
- // masterInstance.linkToRegisteredNftId();
315
365
  }
316
366
 
317
- function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
367
+
368
+ function upgradeMasterInstanceReader(address instanceReaderAddress)
369
+ external
370
+ virtual
371
+ onlyOwner
372
+ {
318
373
  if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
319
374
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
320
375
  if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
@@ -323,154 +378,123 @@ contract InstanceService is
323
378
  if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
324
379
 
325
380
  _masterInstanceReader = instanceReaderAddress;
326
- }
327
-
328
- // TODO access restriction
329
- function upgradeInstanceReader(NftId instanceNftId) external {
330
- IRegistry registry = getRegistry();
331
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
332
- Instance instance = Instance(instanceInfo.objectAddress);
333
- address owner = instance.getOwner();
334
381
 
335
- if (msg.sender != owner) {
336
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
337
- }
338
-
339
- InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
340
- upgradedInstanceReaderClone.initialize(address(registry), address(instance));
341
- instance.setInstanceReader(upgradedInstanceReaderClone);
382
+ emit LogInstanceServiceMasterInstanceReaderUpgraded(
383
+ getRegistry().getNftIdForAddress(_masterInstance),
384
+ instanceReaderAddress);
342
385
  }
343
386
 
344
- function getMasterInstanceReader() external view returns (address) {
387
+ function getMasterInstanceReader() external virtual view returns (address) {
345
388
  return _masterInstanceReader;
346
389
  }
347
390
 
348
- function getMasterInstance() external view returns (address) {
349
- return _masterInstance;
350
- }
391
+ //--- internal functions --------------------------------------------------------//
351
392
 
352
- function getMasterInstanceAccessManager() external view returns (address) {
353
- return _masterInstanceAccessManager;
354
- }
393
+ /// @dev create new cloned instance admin
394
+ /// function used to setup a new instance
395
+ function _cloneNewInstanceAdmin()
396
+ internal
397
+ virtual
398
+ returns (InstanceAdmin clonedAdmin)
399
+ {
400
+ // clone instance specific access manager
401
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
402
+ Clones.clone(
403
+ InstanceAdmin(_masterInstanceAdmin).authority()));
404
+
405
+ // set up the instance admin
406
+ clonedAdmin = InstanceAdmin(
407
+ Clones.clone(_masterInstanceAdmin));
355
408
 
356
- function getMasterInstanceBundleManager() external view returns (address) {
357
- return _masterInstanceBundleManager;
409
+ clonedAdmin.initialize(
410
+ address(clonedAccessManager),
411
+ "InstanceAdmin");
358
412
  }
359
413
 
360
- // From IService
361
- function getDomain() public pure override(Service, IService) returns(ObjectType) {
362
- return INSTANCE();
414
+
415
+ /// @dev create new cloned instance
416
+ /// function used to setup a new instance
417
+ function _createInstance(
418
+ InstanceAdmin instanceAdmin,
419
+ address instanceOwner,
420
+ bool allowAnyToken
421
+ )
422
+ internal
423
+ virtual
424
+ returns (IInstance)
425
+ {
426
+ // clone instance
427
+ Instance clonedInstance = Instance(Clones.clone(_masterInstance));
428
+ clonedInstance.initialize(
429
+ instanceAdmin,
430
+ InstanceStore(Clones.clone(address(_masterInstanceStore))),
431
+ BundleSet(Clones.clone(_masterInstanceBundleSet)),
432
+ RiskSet(Clones.clone(_masterInstanceRiskSet)),
433
+ InstanceReader(Clones.clone(address(_masterInstanceReader))),
434
+ getRegistry(),
435
+ getRelease(),
436
+ instanceOwner,
437
+ allowAnyToken);
438
+
439
+ return clonedInstance;
363
440
  }
364
-
365
- /// @dev top level initializer
441
+
442
+
443
+ /// @dev top level initializer (upgradable contract)
366
444
  function _initialize(
367
445
  address owner,
368
446
  bytes memory data
369
447
  )
370
448
  internal
371
- initializer
372
449
  virtual override
450
+ initializer()
373
451
  {
374
- address initialOwner;
375
- address registryAddress;
376
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
377
- // TODO while InstanceService is not deployed in InstanceServiceManager constructor
378
- // owner is InstanceServiceManager deployer
379
- initializeService(registryAddress, owner);
380
- registerInterface(type(IInstanceService).interfaceId);
381
- }
382
-
383
- function hasRole(address account, RoleId role, address instanceAddress) public view returns (bool) {
384
- Instance instance = Instance(instanceAddress);
385
- InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
386
- return accessManager.hasRole(role, account);
387
- }
388
-
389
- function createGifTarget(NftId instanceNftId, address targetAddress, string memory targetName) external onlyRegisteredService {
390
- IRegistry registry = getRegistry();
391
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
392
- Instance instance = Instance(instanceInfo.objectAddress);
393
- InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
394
- accessManager.createGifTarget(targetAddress, targetName);
395
- }
396
-
397
- function grantDistributionDefaultPermissions(NftId instanceNftId, address distributionAddress, string memory distributionName) external onlyRegisteredService {
398
- IRegistry registry = getRegistry();
399
- IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionAddress);
452
+ (
453
+ address authority,
454
+ address registry
455
+ ) = abi.decode(data, (address, address));
400
456
 
401
- if (distributionInfo.objectType != DISTRIBUTION()) {
402
- revert ErrorInstanceServiceInvalidComponentType(distributionAddress, DISTRIBUTION(), distributionInfo.objectType);
403
- }
404
-
405
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
406
- Instance instance = Instance(instanceInfo.objectAddress);
407
- InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
457
+ __Service_init(authority, registry, owner);
408
458
 
409
- bytes4[] memory fctSelectors = new bytes4[](1);
410
- fctSelectors[0] = IDistributionComponent.setFees.selector;
411
- instanceAccessManager.setTargetFunctionRole(distributionName, fctSelectors, DISTRIBUTION_OWNER_ROLE());
459
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
460
+ _stakingService = IStakingService(_getServiceAddress(STAKING()));
461
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
412
462
 
413
- bytes4[] memory fctSelectors2 = new bytes4[](2);
414
- fctSelectors2[0] = IDistributionComponent.processSale.selector;
415
- fctSelectors2[1] = IDistributionComponent.processRenewal.selector;
416
- instanceAccessManager.setTargetFunctionRole(distributionName, fctSelectors2, PRODUCT_SERVICE_ROLE());
463
+ _registerInterface(type(IInstanceService).interfaceId);
417
464
  }
418
465
 
419
- function grantPoolDefaultPermissions(NftId instanceNftId, address poolAddress, string memory poolName) external onlyRegisteredService {
420
- IRegistry registry = getRegistry();
421
- IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(poolAddress);
422
-
423
- if (poolInfo.objectType != POOL()) {
424
- revert ErrorInstanceServiceInvalidComponentType(poolAddress, POOL(), poolInfo.objectType);
425
- }
426
-
427
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
428
- Instance instance = Instance(instanceInfo.objectAddress);
429
- InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
430
466
 
431
- bytes4[] memory fctSelectors = new bytes4[](1);
432
- fctSelectors[0] = IPoolComponent.setFees.selector;
433
- instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors, POOL_OWNER_ROLE());
434
-
435
- bytes4[] memory fctSelectors2 = new bytes4[](1);
436
- fctSelectors2[0] = IPoolComponent.verifyApplication.selector;
437
- instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors2, POLICY_SERVICE_ROLE());
438
- }
439
-
440
- function grantProductDefaultPermissions(NftId instanceNftId, address productAddress, string memory productName) external onlyRegisteredService {
467
+ function _checkInstance(
468
+ address instanceAddress,
469
+ VersionPart expectedRelease
470
+ )
471
+ internal
472
+ virtual
473
+ view
474
+ {
441
475
  IRegistry registry = getRegistry();
442
- IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productAddress);
443
476
 
444
- if (productInfo.objectType != PRODUCT()) {
445
- revert ErrorInstanceServiceInvalidComponentType(productAddress, PRODUCT(), productInfo.objectType);
477
+ NftId instanceNftId = registry.getNftIdForAddress(instanceAddress);
478
+ if (instanceNftId.eqz()) {
479
+ revert ErrorInstanceServiceNotRegistered(instanceAddress);
446
480
  }
447
481
 
448
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
449
- Instance instance = Instance(instanceInfo.objectAddress);
450
- InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
451
-
452
- bytes4[] memory fctSelectors = new bytes4[](1);
453
- fctSelectors[0] = IProductComponent.setFees.selector;
454
- instanceAccessManager.setTargetFunctionRole(productName, fctSelectors, PRODUCT_OWNER_ROLE());
455
- }
456
-
457
- function setTargetLocked(string memory targetName, bool locked) external {
458
- address componentAddress = msg.sender;
459
- IRegistry registry = getRegistry();
460
- IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
461
- if (componentInfo.nftId.eqz()) {
462
- revert ErrorInstanceServiceComponentNotRegistered(componentAddress);
482
+ ObjectType objectType = registry.getObjectInfo(instanceNftId).objectType;
483
+ if (objectType != INSTANCE()) {
484
+ revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
463
485
  }
464
486
 
465
- // TODO validate component type
466
-
487
+ if (expectedRelease.gtz()) {
488
+ VersionPart instanceRelease = IInstance(instanceAddress).getRelease();
489
+ if (instanceRelease != expectedRelease) {
490
+ revert ErrorInstanceServiceInstanceVersionMismatch(instanceNftId, expectedRelease, instanceRelease);
491
+ }
492
+ }
493
+ }
467
494
 
468
- address instanceAddress = registry.getObjectInfo(componentInfo.parentNftId).objectAddress;
469
- IInstance instance = IInstance(instanceAddress);
470
495
 
471
- InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
472
- accessManager.setTargetClosed(targetName, locked);
496
+ // From IService
497
+ function _getDomain() internal pure override returns(ObjectType) {
498
+ return INSTANCE();
473
499
  }
474
-
475
- }
476
-
500
+ }