@etherisc/gif-next 0.0.2-ffa91a6-022 → 3.0.0-04e2e0d-531

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