@etherisc/gif-next 0.0.2-be8b3db-650 → 0.0.2-bf51045-496

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