@etherisc/gif-next 0.0.2-86e23a6-752 → 0.0.2-86fb77b-888

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