@etherisc/gif-next 0.0.2-9ed3c41-176 → 0.0.2-9f1b659-471

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 (561) hide show
  1. package/README.md +103 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +673 -262
  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 +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +549 -209
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +212 -473
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +139 -381
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +814 -399
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +228 -124
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +135 -187
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +582 -141
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +567 -67
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +385 -60
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +573 -165
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1034 -311
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1685 -774
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +399 -231
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +143 -105
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +983 -782
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +152 -350
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
  109. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +129 -129
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +128 -318
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +177 -97
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +198 -433
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +574 -270
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +216 -104
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +383 -53
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +158 -212
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
  134. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  135. package/artifacts/contracts/pool/Pool.sol/Pool.json +148 -392
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  137. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  139. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +925 -545
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -106
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  143. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +159 -99
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  147. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +287 -427
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  149. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +466 -245
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +187 -123
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +350 -18
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +417 -101
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  163. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +272 -222
  164. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  165. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  167. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +532 -311
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  169. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +196 -108
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  173. package/artifacts/contracts/product/PricingService.sol/PricingService.json +249 -329
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -137
  176. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  177. package/artifacts/contracts/product/Product.sol/Product.json +279 -419
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  179. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +359 -48
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  189. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +565 -109
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +795 -394
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1061 -0
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +141 -89
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +483 -253
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +86 -277
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +624 -560
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +198 -120
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -93
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +535 -240
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +118 -129
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +42 -6
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  235. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
  242. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IService.sol/IService.json +84 -2
  245. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  246. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  247. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  248. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +117 -318
  249. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  250. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +48 -7
  251. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  253. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  254. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  255. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  256. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +41 -57
  257. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  258. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  259. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  260. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
  261. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  262. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  263. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  264. package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  269. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  270. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  271. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  272. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1305 -159
  273. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  274. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
  275. package/artifacts/contracts/staking/ITargetManager.sol/ITargetManager.dbg.json +4 -0
  276. package/artifacts/contracts/staking/ITargetManager.sol/ITargetManager.json +69 -0
  277. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  278. package/artifacts/contracts/staking/Staking.sol/Staking.json +1588 -478
  279. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  280. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  281. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  283. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  284. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +225 -104
  285. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  286. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +185 -223
  287. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  288. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
  289. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -96
  291. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  292. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1311 -560
  293. package/artifacts/contracts/staking/TargetManager.sol/TargetManager.dbg.json +4 -0
  294. package/artifacts/contracts/staking/TargetManager.sol/TargetManager.json +134 -0
  295. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  296. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +135 -49
  297. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  298. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Amount.sol/AmountLib.json +63 -10
  300. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  302. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  304. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  306. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  308. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  310. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  312. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  313. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  314. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  316. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  317. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  318. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  320. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  322. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  324. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  326. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  328. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  330. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +93 -2
  332. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  334. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  336. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  338. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  340. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +24 -5
  342. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +109 -35
  344. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  346. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  348. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  349. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  350. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  352. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  354. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  355. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  356. package/contracts/accounting/AccountingService.sol +274 -0
  357. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  358. package/contracts/accounting/IAccountingService.sol +47 -0
  359. package/contracts/authorization/AccessAdmin.sol +458 -269
  360. package/contracts/authorization/AccessAdminLib.sol +396 -0
  361. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  362. package/contracts/authorization/Authorization.sol +159 -208
  363. package/contracts/authorization/IAccess.sol +25 -6
  364. package/contracts/authorization/IAccessAdmin.sol +87 -79
  365. package/contracts/authorization/IAuthorization.sol +9 -37
  366. package/contracts/authorization/IServiceAuthorization.sol +57 -17
  367. package/contracts/authorization/ServiceAuthorization.sol +255 -25
  368. package/contracts/distribution/BasicDistribution.sol +22 -30
  369. package/contracts/distribution/BasicDistributionAuthorization.sol +34 -10
  370. package/contracts/distribution/Distribution.sol +48 -84
  371. package/contracts/distribution/DistributionService.sol +276 -130
  372. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  373. package/contracts/distribution/IDistributionComponent.sol +11 -14
  374. package/contracts/distribution/IDistributionService.sol +56 -26
  375. package/contracts/examples/fire/DamageLevel.sol +59 -0
  376. package/contracts/examples/fire/FirePool.sol +86 -0
  377. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  378. package/contracts/examples/fire/FireProduct.sol +433 -0
  379. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  380. package/contracts/examples/fire/FireUSD.sol +26 -0
  381. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  382. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  383. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  384. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  385. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  386. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  387. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  388. package/contracts/instance/BundleSet.sol +42 -38
  389. package/contracts/instance/IInstance.sol +102 -43
  390. package/contracts/instance/IInstanceService.sol +59 -34
  391. package/contracts/instance/Instance.sol +193 -100
  392. package/contracts/instance/InstanceAdmin.sol +275 -158
  393. package/contracts/instance/InstanceAuthorizationV3.sol +120 -56
  394. package/contracts/instance/InstanceReader.sol +478 -251
  395. package/contracts/instance/InstanceService.sol +293 -236
  396. package/contracts/instance/InstanceServiceManager.sol +8 -13
  397. package/contracts/instance/InstanceStore.sol +24 -2
  398. package/contracts/instance/RiskSet.sol +126 -0
  399. package/contracts/instance/base/BalanceStore.sol +4 -6
  400. package/contracts/instance/base/ObjectCounter.sol +1 -2
  401. package/contracts/instance/base/ObjectLifecycle.sol +13 -10
  402. package/contracts/instance/base/ObjectSet.sol +31 -33
  403. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  404. package/contracts/instance/module/IBundle.sol +6 -5
  405. package/contracts/instance/module/IComponents.sol +30 -20
  406. package/contracts/instance/module/IDistribution.sol +21 -9
  407. package/contracts/instance/module/IPolicy.sol +50 -29
  408. package/contracts/instance/module/IRisk.sol +5 -0
  409. package/contracts/mock/Dip.sol +1 -1
  410. package/contracts/oracle/BasicOracle.sol +2 -5
  411. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  412. package/contracts/oracle/IOracle.sol +9 -4
  413. package/contracts/oracle/IOracleComponent.sol +2 -1
  414. package/contracts/oracle/IOracleService.sol +2 -1
  415. package/contracts/oracle/Oracle.sol +23 -26
  416. package/contracts/oracle/OracleService.sol +119 -87
  417. package/contracts/oracle/OracleServiceManager.sol +8 -11
  418. package/contracts/pool/BasicPool.sol +39 -41
  419. package/contracts/pool/BasicPoolAuthorization.sol +43 -11
  420. package/contracts/pool/BundleService.sol +218 -128
  421. package/contracts/pool/BundleServiceManager.sol +8 -11
  422. package/contracts/pool/IBundleService.sol +43 -33
  423. package/contracts/pool/IPoolComponent.sol +20 -10
  424. package/contracts/pool/IPoolService.sol +97 -77
  425. package/contracts/pool/Pool.sol +146 -124
  426. package/contracts/pool/PoolLib.sol +341 -0
  427. package/contracts/pool/PoolService.sol +419 -256
  428. package/contracts/pool/PoolServiceManager.sol +6 -9
  429. package/contracts/product/ApplicationService.sol +153 -80
  430. package/contracts/product/ApplicationServiceManager.sol +6 -6
  431. package/contracts/product/BasicProduct.sol +13 -46
  432. package/contracts/product/BasicProductAuthorization.sol +33 -10
  433. package/contracts/product/ClaimService.sol +382 -194
  434. package/contracts/product/ClaimServiceManager.sol +6 -6
  435. package/contracts/product/IApplicationService.sol +29 -3
  436. package/contracts/product/IClaimService.sol +48 -11
  437. package/contracts/product/IPolicyService.sol +61 -37
  438. package/contracts/product/IPricingService.sol +11 -10
  439. package/contracts/product/IProductComponent.sol +28 -5
  440. package/contracts/product/IRiskService.sol +48 -0
  441. package/contracts/product/PolicyService.sol +443 -273
  442. package/contracts/product/PolicyServiceLib.sol +139 -0
  443. package/contracts/product/PolicyServiceManager.sol +6 -9
  444. package/contracts/product/PricingService.sol +90 -84
  445. package/contracts/product/PricingServiceManager.sol +6 -9
  446. package/contracts/product/Product.sol +201 -100
  447. package/contracts/product/RiskService.sol +190 -0
  448. package/contracts/product/RiskServiceManager.sol +39 -0
  449. package/contracts/registry/ChainNft.sol +72 -40
  450. package/contracts/registry/IRegistry.sol +70 -32
  451. package/contracts/registry/IRegistryService.sol +5 -12
  452. package/contracts/registry/IRelease.sol +29 -0
  453. package/contracts/registry/ITransferInterceptor.sol +1 -2
  454. package/contracts/registry/Registry.sol +367 -207
  455. package/contracts/registry/RegistryAdmin.sol +110 -287
  456. package/contracts/registry/RegistryAuthorization.sol +312 -0
  457. package/contracts/registry/RegistryService.sol +42 -67
  458. package/contracts/registry/RegistryServiceManager.sol +5 -5
  459. package/contracts/registry/ReleaseAdmin.sol +195 -0
  460. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  461. package/contracts/registry/ReleaseRegistry.sol +279 -241
  462. package/contracts/registry/ServiceAuthorizationV3.sol +205 -63
  463. package/contracts/registry/TokenRegistry.sol +61 -59
  464. package/contracts/shared/Component.sol +70 -137
  465. package/contracts/shared/ComponentService.sol +452 -346
  466. package/contracts/shared/ComponentServiceManager.sol +10 -7
  467. package/contracts/shared/ContractLib.sol +312 -0
  468. package/contracts/shared/IComponent.sol +6 -18
  469. package/contracts/shared/IComponentService.sol +50 -41
  470. package/contracts/shared/IInstanceLinkedComponent.sol +7 -27
  471. package/contracts/shared/IKeyValueStore.sol +1 -1
  472. package/contracts/shared/ILifecycle.sol +3 -1
  473. package/contracts/shared/INftOwnable.sol +4 -0
  474. package/contracts/shared/IPolicyHolder.sol +12 -22
  475. package/contracts/shared/IRegisterable.sol +22 -1
  476. package/contracts/shared/IService.sol +4 -6
  477. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  478. package/contracts/shared/InstanceLinkedComponent.sol +83 -40
  479. package/contracts/shared/KeyValueStore.sol +4 -4
  480. package/contracts/shared/Lifecycle.sol +15 -4
  481. package/contracts/shared/NftOwnable.sol +33 -11
  482. package/contracts/shared/PolicyHolder.sol +20 -59
  483. package/contracts/shared/Registerable.sol +52 -21
  484. package/contracts/shared/RegistryLinked.sol +9 -14
  485. package/contracts/shared/Service.sol +22 -38
  486. package/contracts/shared/TokenHandler.sol +310 -26
  487. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  488. package/contracts/staking/IStaking.sol +203 -69
  489. package/contracts/staking/IStakingService.sol +45 -78
  490. package/contracts/staking/ITargetManager.sol +28 -0
  491. package/contracts/staking/Staking.sol +525 -243
  492. package/contracts/staking/StakingLib.sol +195 -0
  493. package/contracts/staking/StakingManager.sol +11 -13
  494. package/contracts/staking/StakingReader.sol +55 -90
  495. package/contracts/staking/StakingService.sol +62 -152
  496. package/contracts/staking/StakingServiceManager.sol +9 -7
  497. package/contracts/staking/StakingStore.sol +867 -337
  498. package/contracts/staking/TargetManager.sol +103 -0
  499. package/contracts/staking/TargetManagerLib.sol +8 -4
  500. package/contracts/type/Amount.sol +31 -5
  501. package/contracts/type/Blocknumber.sol +22 -16
  502. package/contracts/type/ChainId.sol +101 -0
  503. package/contracts/type/ClaimId.sol +6 -1
  504. package/contracts/type/Fee.sol +8 -8
  505. package/contracts/type/Key32.sol +2 -2
  506. package/contracts/type/Key32Set.sol +62 -0
  507. package/contracts/type/NftId.sol +7 -0
  508. package/contracts/type/ObjectType.sol +73 -37
  509. package/contracts/type/PayoutId.sol +10 -10
  510. package/contracts/type/Referral.sol +1 -0
  511. package/contracts/type/RiskId.sol +38 -6
  512. package/contracts/type/RoleId.sol +61 -55
  513. package/contracts/type/Seconds.sol +35 -1
  514. package/contracts/type/Selector.sol +5 -0
  515. package/contracts/type/StateId.sol +15 -1
  516. package/contracts/type/String.sol +12 -0
  517. package/contracts/type/Timestamp.sol +14 -7
  518. package/contracts/type/UFixed.sol +57 -126
  519. package/contracts/type/Version.sol +54 -5
  520. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  521. package/contracts/{shared → upgradeability}/ProxyManager.sol +96 -49
  522. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  523. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  524. package/package.json +5 -4
  525. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  526. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  527. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  528. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  529. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  530. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  531. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  532. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
  533. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  534. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  535. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  536. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  537. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  538. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  539. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  540. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  541. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  542. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  543. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  544. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  545. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  546. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  547. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  548. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  549. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
  550. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  551. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  552. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  553. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  554. package/contracts/instance/module/IAccess.sol +0 -46
  555. package/contracts/product/IProductService.sol +0 -33
  556. package/contracts/product/ProductService.sol +0 -124
  557. package/contracts/product/ProductServiceManager.sol +0 -42
  558. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  559. package/contracts/shared/InitializableCustom.sol +0 -177
  560. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  561. package/contracts/staking/StakeManagerLib.sol +0 -231
@@ -1,9 +1,15 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount} from "../type/Amount.sol";
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
5
6
  import {IComponent} from "../shared/IComponent.sol";
6
- import {IVersionable} from "../shared/IVersionable.sol";
7
+ import {ITargetManager} from "./ITargetManager.sol";
8
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
9
+
10
+ import {Amount} from "../type/Amount.sol";
11
+ import {Blocknumber} from "../type/Blocknumber.sol";
12
+ import {ChainId} from "../type/ChainId.sol";
7
13
  import {NftId} from "../type/NftId.sol";
8
14
  import {ObjectType} from "../type/ObjectType.sol";
9
15
  import {Seconds} from "../type/Seconds.sol";
@@ -11,100 +17,230 @@ import {StakingReader} from "./StakingReader.sol";
11
17
  import {StakingStore} from "./StakingStore.sol";
12
18
  import {Timestamp} from "../type/Timestamp.sol";
13
19
  import {UFixed} from "../type/UFixed.sol";
20
+ import {VersionPart} from "../type/Version.sol";
21
+
14
22
 
15
23
  interface IStaking is
16
24
  IComponent,
17
- IVersionable
25
+ IVersionable,
26
+ ITargetManager
18
27
  {
19
- // staking rate
20
- event LogStakingStakingRateSet(uint256 chainId, address token, UFixed oldStakingRate, UFixed newStakingRate);
28
+
29
+ // owner functions
30
+ event LogStakingProtocolLockingPeriodSet(NftId targetNftId, Seconds newLockingPeriod, Seconds oldLockingPeriod, Blocknumber lastUpdatedIn);
31
+ event LogStakingProtocolRewardRateSet(NftId targetNftId, UFixed newRewardRate, UFixed oldRewardRate, Blocknumber lastUpdatedIn);
32
+ event LogStakingStakingRateSet(ChainId chainId, address token, UFixed newStakingRate, UFixed oldStakingRate, Blocknumber lastUpdatedIn);
33
+ event LogStakingStakingServiceSet(address stakingService, VersionPart release, address oldStakingService);
34
+ event LogStakingStakingReaderSet(address stakingReader, address oldStakingReader);
35
+ event LogStakingTargetManagerSet(address targetManager, address oldTargetManager);
36
+ event LogStakingTokenHandlerApproved(address token, Amount approvalAmount, Amount oldApprovalAmount);
37
+
38
+ // token
39
+ event LogStakingTokenAdded(ChainId chainId, address token);
40
+ event LogStakingTargetTokenAdded(NftId targetNftId, ChainId chainId, address token);
41
+
42
+ // total value locked
43
+ event LogStakingTotalValueLockedIncreased(NftId targetNftId, address token, Amount amount, Amount newBalance);
44
+ event LogStakingTotalValueLockedDecreased(NftId targetNftId, address token, Amount amount, Amount newBalance);
45
+
46
+ // targets
47
+ event LogStakingTargetCreated(NftId targetNftId, ObjectType objectType, Seconds lockingPeriod, UFixed rewardRate, Amount stakeLimitAmount);
48
+ event LogStakingTargetLimitsUpdated(NftId targetNftId, Amount marginAmount, Amount hardLimitAmount, Blocknumber lastUpdateIn);
49
+ event LogStakingTargetLimitUpdated(NftId targetNftId, Amount limitAmount, Amount hardLimitAmount, Amount requiredStakeAmount, Amount actualStakeAmount, Blocknumber lastUpdateIn);
21
50
 
22
51
  // target parameters
23
- event LogStakingLockingPeriodSet(NftId targetNftId, Seconds oldLockingPeriod, Seconds lockingPeriod);
24
- event LogStakingRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
52
+ event LogStakingTargetLockingPeriodSet(NftId targetNftId, Seconds oldLockingPeriod, Seconds lockingPeriod);
53
+ event LogStakingTargetRewardRateSet(NftId targetNftId, UFixed rewardRate, UFixed oldRewardRate);
54
+ // TODO cleanup LogStakingTargetMaxStakedAmountSet
55
+ event LogStakingTargetMaxStakedAmountSet(NftId targetNftId, Amount stakeLimitAmount, Blocknumber lastUpdateIn);
56
+ event LogStakingTargetLimitsSet(NftId targetNftId, Amount stakeLimitAmount, Amount marginAmount, Amount limitAmount);
57
+
58
+ // reward reserves
59
+ event LogStakingRewardReservesRefilled(NftId targetNftId, Amount dipAmount, address targetOwner, Amount reserveBalance, Blocknumber lastUpdateIn);
60
+ event LogStakingRewardReservesWithdrawn(NftId targetNftId, Amount dipAmount, address targetOwner, Amount reserveBalance, Blocknumber lastUpdateIn);
61
+ event LogStakingRewardReservesSpent(NftId targetNftId, Amount dipAmount, Amount reserveBalance, Blocknumber lastUpdateIn);
62
+
63
+ // stakes
64
+ event LogStakingStakeCreated(NftId stakeNftId, NftId targetNftId, Amount stakeAmount, Timestamp lockedUntil, address stakeOwner);
65
+ event LogStakingStakeRewardsUpdated(NftId stakeNftId, Amount rewardIncrementAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil);
66
+ event LogStakingRewardsRestaked(NftId stakeNftId, Amount restakedAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil);
67
+ event LogStakingStaked(NftId stakeNftId, Amount stakedAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil);
68
+ event LogStakingUnstaked(NftId stakeNftId, Amount unstakedAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil);
69
+ event LogStakingRewardsClaimed(NftId stakeNftId, Amount claimedAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil);
70
+
71
+ event LogStakingStakeRestaked(NftId stakeNftId, NftId targetNftId, Amount stakeAmount, address owner, NftId oldStakeNftId);
25
72
 
26
73
  // modifiers
27
74
  error ErrorStakingNotStake(NftId stakeNftId);
28
75
  error ErrorStakingNotTarget(NftId targetNftId);
76
+ error ErrorStakingNotOwner(NftId stakeNftId, address expectedOwner, address actualOwner);
29
77
 
30
78
  error ErrorStakingNotStakingOwner();
31
79
  error ErrorStakingNotNftOwner(NftId nftId);
32
80
 
81
+ // owner functions
82
+ error ErrorStakingReleaseNotActive(VersionPart release);
83
+ error ErrorStakingServiceNotFound(VersionPart release);
84
+
85
+ // initializeTokenHandler
86
+ error ErrorStakingNotRegistry(address registry);
87
+
33
88
  // staking rate
34
- error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
89
+ error ErrorStakingTokenNotRegistered(ChainId chainId, address token);
35
90
 
36
91
  // check dip balance and allowance
37
92
  error ErrorStakingDipBalanceInsufficient(address owner, uint256 amount, uint256 dipBalance);
38
93
  error ErrorStakingDipAllowanceInsufficient(address owner, address tokenHandler, uint256 amount, uint256 dipAllowance);
39
94
 
40
95
  error ErrorStakingStakingReaderStakingMismatch(address stakingByStakingReader);
96
+
97
+ // target management
98
+ error ErrorStakingTargetNotFound(NftId targetNftId);
99
+ error ErrorStakingTargetTokenNotFound(NftId targetNftId, ChainId chainId, address token);
100
+ error ErrorStakingTargetMaxStakedAmountExceeded(NftId targetNftId, Amount stakeLimitAmount, Amount stakedAmount);
101
+
41
102
  error ErrorStakingTargetAlreadyRegistered(NftId targetNftId);
42
103
  error ErrorStakingTargetNftIdZero();
43
104
  error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
44
105
  error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
45
- error ErrorStakingLockingPeriodZero(NftId targetNftId);
106
+ error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
46
107
  error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
108
+ error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
47
109
  error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
48
- error ErrorStakingTargetNotFound(NftId targetNftId);
49
- error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
50
110
 
51
- error ErrorStakingTargetNotActive(NftId targetNftId);
52
111
  error ErrorStakingStakeAmountZero(NftId targetNftId);
53
112
 
54
113
  // info for individual stake
55
114
  struct StakeInfo {
56
- Timestamp lockedUntil;
115
+ // slot 0
116
+ Amount stakedAmount; // 96
117
+ Amount rewardAmount; // 96
118
+ Timestamp lockedUntil; // 40
119
+ // slot 1
120
+ NftId targetNftId; // 96, redundant to parent nft in registry object info
121
+ Timestamp lastUpdateAt; // 40, needed to update rewards
122
+ Blocknumber lastUpdateIn; // 40, needed for traceability
57
123
  }
58
124
 
59
125
  struct TargetInfo {
60
- ObjectType objectType;
61
- uint256 chainId;
62
- Seconds lockingPeriod;
63
- UFixed rewardRate;
126
+ // Slot 0
127
+ Amount stakedAmount; // 96
128
+ Amount rewardAmount; // 96
129
+ Blocknumber lastUpdateIn; // 40, needed for traceability
130
+ // Slot 1
131
+ Amount reserveAmount; // 96
132
+ Amount limitAmount; // 96
133
+ Seconds lockingPeriod; // 40
134
+ ObjectType objectType; // 8
135
+ // Slot 2
136
+ UFixed rewardRate; // 160
137
+ ChainId chainId; // 96 redundant to target nft id
64
138
  }
65
139
 
66
- // staking rate management
140
+ struct LimitInfo {
141
+ // Slot 0
142
+ Amount marginAmount; // 96
143
+ Amount hardLimitAmount; // 96
144
+ Blocknumber lastUpdateIn; // 40, needed for traceability
145
+ }
67
146
 
68
- /// @dev sets the rate that converts 1 token of total value locked into the
69
- /// the required staked dip amount to back up the locked token value
70
- function setStakingRate(uint256 chainId, address token, UFixed stakingRate) external;
147
+ struct TvlInfo {
148
+ // Slot 0
149
+ Amount tvlAmount; // 96
150
+ Amount tvlBaselineAmount; // 96
151
+ uint16 updatesCounter; // 8
152
+ Blocknumber lastUpdateIn; // 40, needed for traceability
153
+ }
71
154
 
155
+ struct TokenInfo {
156
+ // Slot 0
157
+ UFixed stakingRate; // 160
158
+ Blocknumber lastUpdateIn; // 40, needed for traceability
159
+ }
72
160
 
73
- // target management
161
+ function initializeTokenHandler() external;
162
+
163
+ //--- only owner functions ----------------------------------------------//
164
+
165
+ /// @dev Set the stake locking period for protocol stakes to the specified duration.
166
+ function setProtocolLockingPeriod(Seconds lockingPeriod) external;
167
+
168
+ /// @dev Set the protocol reward rate.
169
+ function setProtocolRewardRate(UFixed rewardRate) external;
170
+
171
+ /// @dev Set the staking rate for the specified chain and token.
172
+ /// The staking rate defines the amount of staked dips required to back up 1 token of total value locked.
173
+ function setStakingRate(ChainId chainId, address token, UFixed stakingRate) external;
174
+
175
+ /// @dev Sets/updates the staking service contract to the staking service of the specified release.
176
+ function setStakingService(VersionPart release) external;
74
177
 
178
+ /// @dev Sets/updates the staking reader contract.
179
+ function setStakingReader(address stakingReader) external;
180
+
181
+ // TODO rename TargetManager to something without manager (manager reserved for upgradeable stuff)
182
+ /// @dev Sets/updates the target manager contract.
183
+ function setTargetManager(address targetManager) external;
184
+
185
+ /// @dev Registers a token for recording staking rate and total value locked.
186
+ function addToken(ChainId chainId, address token) external;
187
+
188
+ /// @dev Set the approval to the token handler.
189
+ /// Defines the max allowance from the staking wallet to the token handler.
190
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external;
191
+
192
+ //--- only target owner functions ---------------------------------------//
193
+
194
+ /// @dev (Re)fills the staking reward reserves for the specified target
195
+ /// Unpermissioned: anybody may fill up staking reward reserves
196
+ function refillRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
197
+
198
+ /// @dev Defunds the staking reward reserves for the specified target
199
+ /// Permissioned: only the owner may call this function
200
+ function withdrawRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
201
+
202
+ //--- target management -------------------------------------------------//
203
+
204
+ /// @dev Register a new target for staking.
205
+ /// Permissioned: only the staking service may call this function
75
206
  function registerTarget(
76
207
  NftId targetNftId,
77
208
  ObjectType expectedObjectType,
78
- uint256 chainId,
79
209
  Seconds initialLockingPeriod,
80
210
  UFixed initialRewardRate
81
211
  ) external;
82
212
 
83
213
 
84
- /// @dev set the stake locking period to the specified duration.
85
- /// permissioned: only the staking service may call this function
214
+ /// @dev Set the stake locking period to the specified duration.
215
+ /// Permissioned: only the staking service may call this function
86
216
  function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod) external;
87
217
 
88
- /// @dev update the target specific reward rate.
89
- /// permissioned: only the staking service may call this function
218
+ /// @dev Update the target specific reward rate.
219
+ /// Permissioned: only the staking service may call this function
90
220
  function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
91
221
 
92
- /// @dev (re)fills the staking reward reserves for the specified target
93
- /// unpermissioned: anybody may fill up staking reward reserves
94
- function refillRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
222
+ /// @dev Set the staking limits for the specified target.
223
+ /// The margin amount allows staker to stake over the current required stakes by this amount.
224
+ /// The limit amount restricts stakers to ever stake more than this amount.
225
+ /// Permissioned: only the target owner may call this function
226
+ function setTargetLimits(NftId targetNftId, Amount marginAmount, Amount limitAmount) external;
95
227
 
96
- /// @dev defunds the staking reward reserves for the specified target
97
- /// permissioned: only the staking service may call this function
98
- function withdrawRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
228
+ // TODO refactor this into new setStakingLimits
229
+ /// @dev Set the maximum staked amount for the specified target.
230
+ /// Permissioned: only the staking service may call this function
231
+ function setMaxStakedAmount(NftId targetNftId, Amount stakeLimitAmount) external;
99
232
 
233
+ /// @dev Register a token for the specified target.
234
+ /// Used for instance targets. Each product may introduce its own token.
235
+ /// Permissioned: only the staking service may call this function
236
+ function addTargetToken(NftId targetNftId, address token) external;
100
237
 
101
- /// @dev increases the total value locked amount for the specified target by the provided token amount.
238
+ /// @dev Increases the total value locked amount for the specified target by the provided token amount.
102
239
  /// function is called when a new policy is collateralized.
103
240
  /// function restricted to the pool service.
104
241
  function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
105
242
 
106
-
107
- /// @dev decreases the total value locked amount for the specified target by the provided token amount.
243
+ /// @dev Decreases the total value locked amount for the specified target by the provided token amount.
108
244
  /// function is called when a new policy is closed or payouts are executed.
109
245
  /// function restricted to the pool service.
110
246
  function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
@@ -112,53 +248,51 @@ interface IStaking is
112
248
 
113
249
  function updateRemoteTvl(NftId targetNftId, address token, Amount amount) external;
114
250
 
115
- // staking functions
251
+ //--- service interaction functions -------------------------------------//
116
252
 
117
- /// @dev creat a new stake info object
118
- /// permissioned: only staking service may call this function.
119
- function createStake(NftId stakeNftId, NftId targetNftId, Amount dipAmount) external;
253
+ /// @dev Set the staking limits for the specified target.
254
+ /// Permissioned: only the staking service may call this function
255
+ // TODO implement
256
+ // function setStakingLimitsByService(NftId targetNftId, Amount marginAmount, Amount limitAmount) external;
120
257
 
121
- /// @dev increase the staked dip by dipAmount for the specified stake.
122
- /// staking rewards are updated and added to the staked dips as well.
123
- /// the function returns the new total amount of staked dips.
124
- function stake(NftId stakeNftId, Amount dipAmount) external returns (Amount stakeBalance);
258
+ /// @dev (Re)fills the staking reward reserves for the specified target
259
+ /// Unpermissioned: anybody may fill up staking reward reserves
260
+ function refillRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferFrom) external returns (Amount newBalance);
125
261
 
126
- /// @dev restakes the dips to a new target.
127
- /// the sum of the staked dips and the accumulated rewards will be restaked.
262
+ /// @dev Defunds the staking reward reserves for the specified target
263
+ /// Permissioned: only the owner may call this function
264
+ function withdrawRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferTo) external returns (Amount newBalance);
265
+
266
+ //--- staking functions -------------------------------------------------//
267
+
268
+ /// @dev Creates a new stake to the specified target over the given DIP amount.
269
+ /// The stake owner is provided as an argument and becomes the stake NFT holder.
270
+ /// This function is permissionless and may be called by any user.
271
+ function createStake(NftId targetNftId, Amount dipAmount, address stakeOwner) external returns (NftId stakeNftId);
272
+
273
+ /// @dev Increase the staked DIP by dipAmount for the specified stake.
274
+ /// Staking rewards are updated and added to the staked DIP amount as well.
275
+ /// The function returns the new total amount of staked dips.
276
+ function stake(NftId stakeNftId, Amount dipAmount) external returns (Amount newStakeBalance);
277
+
278
+ /// @dev Pays the specified DIP amount to the holder of the stake NFT ID.
128
279
  /// permissioned: only staking service may call this function.
129
- function restake(NftId stakeNftId, NftId newTargetNftId) external returns (NftId newStakeNftId);
280
+ function unstake(NftId stakeNftId) external returns (Amount unstakedAmount);
130
281
 
131
- /// @dev retuns the specified amount of dips to the holder of the specified stake nft.
132
- /// if dipAmount is set to Amount.max() all staked dips and all rewards are transferred to
282
+ /// @dev restakes the dips to a new target.
283
+ /// the sum of the staked dips and the accumulated rewards will be restaked.
133
284
  /// permissioned: only staking service may call this function.
134
- function unstake(NftId stakeNftId)
135
- external
136
- returns (
137
- Amount unstakedAmount,
138
- Amount rewardsClaimedAmount
139
- );
285
+ function restake(NftId stakeNftId, NftId newTargetNftId) external returns (NftId newStakeNftId, Amount newStakeBalance);
140
286
 
141
287
  /// @dev update stake rewards for current time.
142
288
  /// may be called before an announement of a decrease of a reward rate reduction.
143
289
  /// calling this functions ensures that reward balance is updated using the current (higher) reward rate.
144
290
  /// unpermissioned.
145
- function updateRewards(NftId stakeNftId) external;
291
+ function updateRewards(NftId stakeNftId) external returns (Amount newRewardAmount);
146
292
 
147
293
  /// @dev transfers all rewards accumulated so far to the holder of the specified stake nft.
148
294
  /// permissioned: only staking service may call this function.
149
- function claimRewards(NftId stakeNftId)
150
- external
151
- returns (
152
- Amount rewardsClaimedAmount
153
- );
154
-
155
- //--- helper functions --------------------------------------------------//
156
-
157
- /// @dev transfers the specified amount of dips from the from address to the staking wallet.
158
- function collectDipAmount(address from, Amount dipAmount) external;
159
-
160
- /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
161
- function transferDipAmount(address to, Amount dipAmount) external;
295
+ function claimRewards(NftId stakeNftId) external returns (Amount rewardsClaimedAmount);
162
296
 
163
297
  //--- view and pure functions -------------------------------------------//
164
298
 
@@ -3,13 +3,12 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
- import {Amount} from "../type/Amount.sol";
7
6
  import {IService} from "../shared/IService.sol";
8
7
  import {IStaking} from "./IStaking.sol";
8
+
9
+ import {Amount} from "../type/Amount.sol";
9
10
  import {NftId} from "../type/NftId.sol";
10
- import {ObjectType} from "../type/ObjectType.sol";
11
11
  import {Seconds} from "../type/Seconds.sol";
12
- import {Timestamp} from "../type/Timestamp.sol";
13
12
  import {TokenHandler} from "../shared/TokenHandler.sol";
14
13
  import {UFixed} from "../type/UFixed.sol";
15
14
 
@@ -25,34 +24,32 @@ interface IStakingService is IService
25
24
  event LogStakingServiceRewardReservesIncreased(NftId targetNftId, address rewardProvider, Amount dipAmount, Amount newBalance);
26
25
  event LogStakingServiceRewardReservesDecreased(NftId targetNftId, address targetOwner, Amount dipAmount, Amount newBalance);
27
26
 
27
+ event LogStakingServiceStakeObjectCreated(NftId stakeNftId, NftId targetNftId, address stakeOwner);
28
28
  event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
29
29
  event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
30
30
  event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
31
+ event LogStakingServiceStakeRestaked(address stakeOwner, NftId indexed stakeNftId, NftId newStakeNftId, NftId indexed newTargetNftId, Amount indexed newStakeBalance);
31
32
 
32
33
  event LogStakingServiceRewardsUpdated(NftId stakeNftId);
33
34
  event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
34
35
 
35
36
  // modifiers
36
- error ErrorStakingServiceNotNftOwner(NftId nftId, address expectedOwner, address owner);
37
+ error ErrorStakingServiceNotStakingOwner(address account);
37
38
  error ErrorStakingServiceNotStaking(address stakingAddress);
38
39
  error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
39
40
 
40
41
  // create
42
+ error ErrorStakingServiceTargetUnknown(NftId targetNftId);
41
43
  error ErrorStakingServiceZeroTargetNftId();
42
44
  error ErrorStakingServiceNotTargetNftId(NftId targetNftId);
43
45
  error ErrorStakingServiceNotActiveTargetNftId(NftId targetNftId);
44
46
  error ErrorStakingServiceDipBalanceInsufficient(NftId targetNftId, uint256 amount, uint256 balance);
45
47
  error ErrorStakingServiceDipAllowanceInsufficient(NftId targetNftId, address tokenHandler, uint256 amount, uint256 allowance);
46
48
 
47
- /// @dev Set the protocol reward rate stake locking period to the specified duration.
48
- /// Permissioned: only staking owner
49
- // TODO implement
50
- // function setProtocolRewardRate(UFixed rewardRate) external;
51
- // function setProtocolLockingPeriod(Seconds lockingPeriod) external;
52
- // TODO also make sure that protocol rewards can be refilled and withdrawn
49
+ //--- functions for instance service -----------------------------------------------//
53
50
 
54
- /// @dev creates/registers an on-chain instance staking target.
55
- /// function granted to instance service
51
+ /// @dev Creates/registers an on-chain instance staking target.
52
+ /// Permissioned: Only instance service
56
53
  function createInstanceTarget(
57
54
  NftId targetNftId,
58
55
  Seconds initialLockingPeriod,
@@ -60,101 +57,71 @@ interface IStakingService is IService
60
57
  ) external;
61
58
 
62
59
  /// @dev Set the instance stake locking period to the specified duration.
63
- /// Permissioned: Only owner of the specified target.
60
+ /// Permissioned: Only instance service
64
61
  function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod) external;
65
62
 
66
63
  /// @dev Set the instance reward rate to the specified value.
67
- /// Permissioned: Only owner of the specified target.
64
+ /// Permissioned: Only instance service
68
65
  function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
69
66
 
67
+ /// @dev Set the instance max staked amount to the specified value.
68
+ /// Permissioned: Only instance service
69
+ function setInstanceMaxStakedAmount(NftId instanceNftId, Amount maxStakingAmount) external;
70
+
70
71
  /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
71
- /// unpermissioned: anybody may fill up staking reward reserves
72
+ /// Permissioned: Only instance service
72
73
  function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
73
74
 
74
- /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the sender
75
- /// unpermissioned: anybody may fill up staking reward reserves
76
- function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
77
-
78
75
  /// @dev Defunds the staking reward reserves for the specified target
79
- /// Permissioned: only the target owner may call this function
76
+ /// Permissioned: Only instance service
80
77
  function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount) external returns (Amount newBalance);
81
78
 
82
- /// @dev create a new stake with amount DIP to the specified target
83
- /// returns the id of the newly minted stake nft
84
- /// permissionless function
85
- function create(
79
+ /// @dev Sets total value locked data for a target contract on a different chain.
80
+ /// this is done via CCIP (cross chain communication)
81
+ function setTotalValueLocked(
86
82
  NftId targetNftId,
83
+ address token,
87
84
  Amount amount
88
- )
89
- external
90
- returns (
91
- NftId stakeNftId
92
- );
93
-
94
-
95
- /// @dev increase an existing stake by amount DIP
96
- /// updates and restakes the staking reward amount
97
- /// function restricted to the current stake owner
98
- function stake(
99
- NftId stakeNftId,
100
- Amount amount
101
- )
102
- external;
103
-
104
-
105
- /// @dev re-stakes the current staked DIP as well as all accumulated rewards to the new stake target.
106
- /// all related stakes and all accumulated reward DIP are transferred to the current stake holder
107
- /// function restricted to the current stake owner
108
- function restakeToNewTarget(
109
- NftId stakeNftId,
110
- NftId newTargetNftId
111
- )
112
- external
113
- returns (
114
- NftId newStakeNftId
115
- );
116
-
117
-
118
- /// @dev updates the reward balance of the stake using the current reward rate.
119
- function updateRewards(
120
- NftId stakeNftId
121
- )
122
- external;
123
-
85
+ ) external;
124
86
 
125
- /// @dev claims all available rewards.
126
- function claimRewards(
127
- NftId stakeNftId
128
- )
129
- external;
87
+ //--- functions for staking component ---------------------------------------------//
130
88
 
89
+ /// @dev Creates a new stake object for the specified target via the registry service.
90
+ /// Permissioned: only the staking component may call this function
91
+ function createStakeObject(
92
+ NftId targetNftId,
93
+ address initialOwner
94
+ ) external returns (NftId stakeNftId);
131
95
 
132
- /// @dev unstakes all dips (stakes and rewards) of an existing stake.
133
- /// function restricted to the current stake owner
134
- function unstake(
135
- NftId stakeNftId
136
- )
137
- external;
96
+ /// @dev Collect DIP token from stake owner.
97
+ /// Permissioned: only the staking component may call this function
98
+ function pullDipToken(Amount dipAmount, address stakeOwner) external;
138
99
 
100
+ /// @dev Transfer DIP token to stake owner.
101
+ /// Permissioned: only the staking component may call this function
102
+ function pushDipToken(Amount dipAmount, address stakeOwner) external;
139
103
 
140
- /// @dev sets total value locked data for a target contract on a different chain.
141
- /// this is done via CCIP (cross chain communication)
142
- function setTotalValueLocked(
143
- NftId targetNftId,
144
- address token,
104
+ /// @dev Approves the staking token handler.
105
+ /// Permissioned: only the staking component may call this function
106
+ function approveTokenHandler(
107
+ IERC20Metadata token,
145
108
  Amount amount
146
- )
147
- external;
109
+ ) external;
110
+
111
+ //--- view functions --------------------------------------------------------------//
148
112
 
149
113
  function getDipToken()
150
114
  external
115
+ view
151
116
  returns (IERC20Metadata dip);
152
117
 
153
118
  function getTokenHandler()
154
119
  external
120
+ view
155
121
  returns (TokenHandler tokenHandler);
156
122
 
157
123
  function getStaking()
158
124
  external
125
+ view
159
126
  returns (IStaking staking);
160
127
  }
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+
7
+ interface ITargetManager {
8
+
9
+ //--- functions ---------------------------------------------------------//
10
+
11
+ /// @dev Updates the target limit.
12
+ /// The target limit defines the maximum stake amount for the target NFT ID.
13
+ function updateLimit(
14
+ NftId targetNftId
15
+ ) external returns (Amount stakeLimitAmount);
16
+
17
+
18
+ //--- view functions ----------------------------------------------------//
19
+
20
+ /// @dev Returns true iff the target limit update is required.
21
+ function isLimitUpdateRequired(
22
+ NftId targetNftId,
23
+ address token,
24
+ uint16 tvlUpdatesCount,
25
+ Amount baselineTvlAmount,
26
+ Amount currentTvlAmount
27
+ ) external view returns (bool updateIsRequired);
28
+ }