@etherisc/gif-next 0.0.2-e0ff180-766 → 0.0.2-e14821a-976

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