@etherisc/gif-next 0.0.2-e79d227-681 → 0.0.2-e7a5428-226

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