@etherisc/gif-next 0.0.2-a67250d-285 → 0.0.2-a6a9eeb-432

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