@etherisc/gif-next 0.0.2-f9bc4c7-556 → 0.0.2-fa35bce-363

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 (794) hide show
  1. package/README.md +378 -20
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +949 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +930 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +848 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +576 -1290
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1082 -0
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +653 -1537
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2646 -0
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1328 -0
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +772 -0
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3792 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  102. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  106. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  107. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  108. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  110. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  111. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  112. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  114. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  116. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  118. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  120. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  122. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
  124. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  126. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  128. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  130. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  132. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  134. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  136. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  138. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +905 -0
  140. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  142. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  143. package/artifacts/contracts/pool/Pool.sol/Pool.json +1025 -0
  144. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  146. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  148. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  150. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  152. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  154. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  156. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  158. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  160. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  162. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +804 -0
  164. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  166. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  168. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  170. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1016 -0
  172. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  173. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +665 -0
  174. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  176. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  178. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  180. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  182. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  184. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  185. package/artifacts/contracts/product/Product.sol/Product.json +1117 -0
  186. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  188. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  190. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +242 -12
  192. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1035 -119
  194. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1072 -0
  196. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  197. package/artifacts/contracts/{instance/IInstanceLinked.sol/IInstanceLinked.json → registry/IRelease.sol/IRelease.json} +6 -6
  198. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  200. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/Registry.sol/Registry.json +1473 -231
  202. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  204. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  206. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1298 -0
  208. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +773 -0
  210. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  212. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  214. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  216. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  218. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +721 -0
  220. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  221. package/artifacts/contracts/shared/Component.sol/Component.json +705 -0
  222. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  224. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/{IOwnable.sol/IOwnable.json → ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  230. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  234. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +630 -0
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  240. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  241. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +146 -147
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  245. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +62 -70
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  247. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +248 -21
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  251. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  252. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  253. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +224 -160
  254. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  256. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  257. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +795 -0
  258. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  259. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  260. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  261. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  262. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  263. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  264. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  265. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +228 -0
  266. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  267. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  268. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +294 -18
  270. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  271. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  272. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  273. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → shared/Service.sol/Service.json} +239 -234
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  278. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  279. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  280. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  281. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2568 -0
  282. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  283. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  284. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  285. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +69 -0
  286. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  287. package/artifacts/contracts/staking/Staking.sol/Staking.json +3028 -0
  288. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  290. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  292. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +863 -0
  294. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +554 -0
  296. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  298. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  299. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  300. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  301. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3136 -0
  302. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  303. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +265 -0
  304. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  305. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +657 -0
  306. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  307. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  308. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  310. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  312. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  314. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  316. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  318. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  320. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  321. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  322. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  323. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  324. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  326. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  327. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  328. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  330. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  332. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  334. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  336. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  338. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  340. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  342. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  344. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  346. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  348. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  350. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  352. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  354. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  355. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  356. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  357. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  358. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  360. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  361. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  362. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  363. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  364. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  365. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  366. package/contracts/accounting/AccountingService.sol +274 -0
  367. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  368. package/contracts/accounting/IAccountingService.sol +47 -0
  369. package/contracts/authorization/AccessAdmin.sol +780 -0
  370. package/contracts/authorization/AccessAdminLib.sol +396 -0
  371. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  372. package/contracts/authorization/Authorization.sol +169 -0
  373. package/contracts/authorization/IAccess.sol +67 -0
  374. package/contracts/authorization/IAccessAdmin.sol +144 -0
  375. package/contracts/authorization/IAuthorization.sol +26 -0
  376. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  377. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  378. package/contracts/distribution/BasicDistribution.sol +141 -0
  379. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  380. package/contracts/distribution/Distribution.sol +247 -0
  381. package/contracts/distribution/DistributionService.sol +448 -0
  382. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  383. package/contracts/distribution/IDistributionComponent.sol +45 -0
  384. package/contracts/distribution/IDistributionService.sol +115 -0
  385. package/contracts/examples/fire/DamageLevel.sol +59 -0
  386. package/contracts/examples/fire/FirePool.sol +86 -0
  387. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  388. package/contracts/examples/fire/FireProduct.sol +433 -0
  389. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  390. package/contracts/examples/fire/FireUSD.sol +26 -0
  391. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  392. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  393. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  394. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  395. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  396. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  397. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  398. package/contracts/instance/BundleSet.sol +130 -0
  399. package/contracts/instance/IInstance.sol +138 -45
  400. package/contracts/instance/IInstanceService.sol +117 -0
  401. package/contracts/instance/Instance.sol +333 -54
  402. package/contracts/instance/InstanceAdmin.sol +383 -0
  403. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  404. package/contracts/instance/InstanceReader.sol +632 -0
  405. package/contracts/instance/InstanceService.sol +500 -0
  406. package/contracts/instance/InstanceServiceManager.sol +39 -0
  407. package/contracts/instance/InstanceStore.sol +298 -0
  408. package/contracts/instance/RiskSet.sol +126 -0
  409. package/contracts/instance/base/BalanceStore.sol +121 -0
  410. package/contracts/instance/base/Cloneable.sol +28 -0
  411. package/contracts/instance/base/ObjectCounter.sol +20 -0
  412. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  413. package/contracts/instance/base/ObjectSet.sol +77 -0
  414. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  415. package/contracts/instance/module/IBundle.sol +21 -0
  416. package/contracts/instance/module/IComponents.sol +62 -0
  417. package/contracts/instance/module/IDistribution.sol +54 -0
  418. package/contracts/instance/module/IPolicy.sol +105 -0
  419. package/contracts/instance/module/IRisk.sol +16 -0
  420. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  421. package/contracts/oracle/BasicOracle.sol +45 -0
  422. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  423. package/contracts/oracle/IOracle.sol +41 -0
  424. package/contracts/oracle/IOracleComponent.sol +33 -0
  425. package/contracts/oracle/IOracleService.sol +66 -0
  426. package/contracts/oracle/Oracle.sol +154 -0
  427. package/contracts/oracle/OracleService.sol +310 -0
  428. package/contracts/oracle/OracleServiceManager.sol +39 -0
  429. package/contracts/pool/BasicPool.sol +162 -0
  430. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  431. package/contracts/pool/BundleService.sol +386 -0
  432. package/contracts/pool/BundleServiceManager.sol +39 -0
  433. package/contracts/pool/IBundleService.sol +116 -0
  434. package/contracts/pool/IPoolComponent.sol +62 -0
  435. package/contracts/pool/IPoolService.sol +170 -0
  436. package/contracts/pool/Pool.sol +333 -0
  437. package/contracts/pool/PoolLib.sol +341 -0
  438. package/contracts/pool/PoolService.sol +614 -0
  439. package/contracts/pool/PoolServiceManager.sol +39 -0
  440. package/contracts/product/ApplicationService.sol +327 -0
  441. package/contracts/product/ApplicationServiceManager.sol +38 -0
  442. package/contracts/product/BasicProduct.sol +49 -0
  443. package/contracts/product/BasicProductAuthorization.sol +63 -0
  444. package/contracts/product/ClaimService.sol +630 -0
  445. package/contracts/product/ClaimServiceManager.sol +38 -0
  446. package/contracts/product/IApplicationService.sol +88 -0
  447. package/contracts/product/IClaimService.sol +136 -0
  448. package/contracts/product/IPolicyService.sol +102 -0
  449. package/contracts/product/IPricingService.sol +40 -0
  450. package/contracts/product/IProductComponent.sol +62 -0
  451. package/contracts/product/IRiskService.sol +48 -0
  452. package/contracts/product/PolicyService.sol +645 -0
  453. package/contracts/product/PolicyServiceLib.sol +139 -0
  454. package/contracts/product/PolicyServiceManager.sol +39 -0
  455. package/contracts/product/PricingService.sol +306 -0
  456. package/contracts/product/PricingServiceManager.sol +39 -0
  457. package/contracts/product/Product.sol +493 -0
  458. package/contracts/product/RiskService.sol +190 -0
  459. package/contracts/product/RiskServiceManager.sol +39 -0
  460. package/contracts/registry/ChainNft.sol +130 -40
  461. package/contracts/registry/IRegistry.sol +144 -29
  462. package/contracts/registry/IRegistryService.sol +62 -0
  463. package/contracts/registry/IRelease.sol +29 -0
  464. package/contracts/registry/ITransferInterceptor.sol +6 -0
  465. package/contracts/registry/Registry.sol +637 -282
  466. package/contracts/registry/RegistryAdmin.sol +191 -0
  467. package/contracts/registry/RegistryAuthorization.sol +312 -0
  468. package/contracts/registry/RegistryService.sol +241 -0
  469. package/contracts/registry/RegistryServiceManager.sol +53 -0
  470. package/contracts/registry/ReleaseAdmin.sol +195 -0
  471. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  472. package/contracts/registry/ReleaseRegistry.sol +525 -0
  473. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  474. package/contracts/registry/TokenRegistry.sol +317 -0
  475. package/contracts/shared/Component.sol +214 -0
  476. package/contracts/shared/ComponentService.sol +687 -0
  477. package/contracts/shared/ComponentServiceManager.sol +38 -0
  478. package/contracts/shared/ContractLib.sol +312 -0
  479. package/contracts/shared/IComponent.sol +58 -0
  480. package/contracts/shared/IComponentService.sol +111 -0
  481. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  482. package/contracts/shared/IKeyValueStore.sol +54 -0
  483. package/contracts/{instance/base → shared}/ILifecycle.sol +6 -5
  484. package/contracts/shared/INftOwnable.sol +27 -0
  485. package/contracts/shared/IPolicyHolder.sol +35 -0
  486. package/contracts/shared/IRegisterable.sol +31 -19
  487. package/contracts/shared/IRegistryLinked.sol +11 -0
  488. package/contracts/shared/IService.sol +23 -0
  489. package/contracts/shared/InitializableERC165.sol +35 -0
  490. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  491. package/contracts/shared/KeyValueStore.sol +131 -0
  492. package/contracts/shared/Lifecycle.sol +88 -0
  493. package/contracts/shared/NftIdSet.sol +65 -0
  494. package/contracts/shared/NftOwnable.sol +129 -0
  495. package/contracts/shared/PolicyHolder.sol +63 -0
  496. package/contracts/shared/Registerable.sol +80 -60
  497. package/contracts/shared/RegistryLinked.sol +38 -0
  498. package/contracts/shared/Service.sol +67 -0
  499. package/contracts/shared/TokenHandler.sol +342 -0
  500. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  501. package/contracts/staking/IStaking.sol +297 -0
  502. package/contracts/staking/IStakingService.sol +127 -0
  503. package/contracts/staking/ITargetLimitHandler.sol +26 -0
  504. package/contracts/staking/Staking.sol +780 -0
  505. package/contracts/staking/StakingLib.sol +195 -0
  506. package/contracts/staking/StakingLifecycle.sol +23 -0
  507. package/contracts/staking/StakingManager.sol +53 -0
  508. package/contracts/staking/StakingReader.sol +151 -0
  509. package/contracts/staking/StakingService.sol +321 -0
  510. package/contracts/staking/StakingServiceManager.sol +46 -0
  511. package/contracts/staking/StakingStore.sol +1174 -0
  512. package/contracts/staking/TargetHandler.sol +102 -0
  513. package/contracts/staking/TargetManagerLib.sol +211 -0
  514. package/contracts/{types → type}/AddressSet.sol +1 -1
  515. package/contracts/type/Amount.sol +154 -0
  516. package/contracts/{types → type}/Blocknumber.sol +36 -12
  517. package/contracts/type/ChainId.sol +101 -0
  518. package/contracts/type/ClaimId.sol +80 -0
  519. package/contracts/type/DistributorType.sol +55 -0
  520. package/contracts/type/Fee.sol +66 -0
  521. package/contracts/{types → type}/Key32.sol +10 -5
  522. package/contracts/type/Key32Set.sol +62 -0
  523. package/contracts/{types → type}/NftId.sol +28 -15
  524. package/contracts/type/NftIdSet.sol +62 -0
  525. package/contracts/type/ObjectType.sol +307 -0
  526. package/contracts/type/PayoutId.sol +82 -0
  527. package/contracts/type/Referral.sol +90 -0
  528. package/contracts/type/RequestId.sol +75 -0
  529. package/contracts/type/RiskId.sol +75 -0
  530. package/contracts/type/RoleId.sol +180 -0
  531. package/contracts/type/Seconds.sol +115 -0
  532. package/contracts/type/Selector.sol +107 -0
  533. package/contracts/{types → type}/StateId.sol +53 -5
  534. package/contracts/type/String.sol +65 -0
  535. package/contracts/{types → type}/Timestamp.sol +39 -19
  536. package/contracts/{types → type}/UFixed.sol +73 -19
  537. package/contracts/type/Version.sol +159 -0
  538. package/contracts/upgradeability/IVersionable.sol +56 -0
  539. package/contracts/upgradeability/ProxyManager.sol +246 -0
  540. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  541. package/contracts/upgradeability/Versionable.sol +62 -0
  542. package/package.json +13 -8
  543. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  544. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  545. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  546. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  547. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  548. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  549. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  550. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  551. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  552. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  553. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  554. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  555. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  556. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  557. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  558. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  559. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  560. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  562. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  564. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  566. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  568. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  570. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  572. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  574. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  575. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  576. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  577. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  578. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  579. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  580. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  581. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  582. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  583. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  584. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  585. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  586. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  587. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  588. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  589. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  590. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  591. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  592. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  593. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  594. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  595. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  596. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  597. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  598. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -326
  599. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  600. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  601. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  602. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  603. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  604. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  605. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  606. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  607. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  608. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  609. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  610. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  611. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  612. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  613. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  614. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  615. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  616. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  617. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  618. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  619. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  620. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  621. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  622. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  623. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  624. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  625. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  626. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  627. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  628. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  629. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  630. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  631. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  632. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  633. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  634. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  635. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  636. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  637. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  638. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  639. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  640. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  641. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  642. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  643. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  644. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  645. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  646. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  647. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  648. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  649. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  650. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  651. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  652. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  653. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
  654. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  655. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  656. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -376
  657. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  658. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  659. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  660. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  661. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  662. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  663. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  664. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  665. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  666. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  667. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  668. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  669. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -164
  670. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  671. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -164
  672. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  673. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  674. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  675. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  676. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  677. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  678. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  679. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  680. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  681. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  682. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  683. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  684. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  685. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  686. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  687. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  688. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  689. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  690. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  691. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  692. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  693. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  694. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  695. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  696. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  697. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  698. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  699. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  700. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  701. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  702. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  703. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  704. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  705. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  706. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  707. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  708. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  709. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  710. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  711. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  712. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  713. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  714. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  715. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  716. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  717. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  718. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  719. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  720. package/contracts/components/BaseComponent.sol +0 -88
  721. package/contracts/components/IBaseComponent.sol +0 -19
  722. package/contracts/components/IPoolComponent.sol +0 -57
  723. package/contracts/components/IProductComponent.sol +0 -19
  724. package/contracts/components/Pool.sol +0 -174
  725. package/contracts/components/Product.sol +0 -117
  726. package/contracts/experiment/errors/Require.sol +0 -38
  727. package/contracts/experiment/errors/Revert.sol +0 -44
  728. package/contracts/experiment/inheritance/A.sol +0 -53
  729. package/contracts/experiment/inheritance/B.sol +0 -28
  730. package/contracts/experiment/inheritance/C.sol +0 -34
  731. package/contracts/experiment/inheritance/IA.sol +0 -13
  732. package/contracts/experiment/inheritance/IB.sol +0 -10
  733. package/contracts/experiment/inheritance/IC.sol +0 -12
  734. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  735. package/contracts/experiment/statemachine/ISM.sol +0 -25
  736. package/contracts/experiment/statemachine/README.md +0 -112
  737. package/contracts/experiment/statemachine/SM.sol +0 -57
  738. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  739. package/contracts/experiment/types/TypeA.sol +0 -47
  740. package/contracts/experiment/types/TypeB.sol +0 -29
  741. package/contracts/instance/IInstanceLinked.sol +0 -8
  742. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  743. package/contracts/instance/base/IInstanceBase.sol +0 -14
  744. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  745. package/contracts/instance/base/IService.sol +0 -15
  746. package/contracts/instance/base/InstanceBase.sol +0 -80
  747. package/contracts/instance/base/KeyValueStore.sol +0 -156
  748. package/contracts/instance/base/Lifecycle.sol +0 -95
  749. package/contracts/instance/base/ModuleBase.sol +0 -52
  750. package/contracts/instance/base/ServiceBase.sol +0 -37
  751. package/contracts/instance/module/access/Access.sol +0 -149
  752. package/contracts/instance/module/access/IAccess.sol +0 -53
  753. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  754. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  755. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  756. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  757. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  758. package/contracts/instance/module/component/IComponent.sol +0 -53
  759. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  760. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  761. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  762. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  763. package/contracts/instance/module/risk/IRisk.sol +0 -10
  764. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  765. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  766. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  767. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  768. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  769. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  770. package/contracts/instance/service/IPoolService.sol +0 -30
  771. package/contracts/instance/service/IProductService.sol +0 -58
  772. package/contracts/instance/service/PoolService.sol +0 -123
  773. package/contracts/instance/service/ProductService.sol +0 -354
  774. package/contracts/registry/IChainNft.sol +0 -21
  775. package/contracts/registry/IRegistryLinked.sol +0 -8
  776. package/contracts/shared/ERC165.sol +0 -21
  777. package/contracts/shared/IOwnable.sol +0 -6
  778. package/contracts/shared/IVersionable.sol +0 -52
  779. package/contracts/shared/Versionable.sol +0 -89
  780. package/contracts/test/TestFee.sol +0 -25
  781. package/contracts/test/TestPool.sol +0 -22
  782. package/contracts/test/TestProduct.sol +0 -44
  783. package/contracts/test/TestRegisterable.sol +0 -19
  784. package/contracts/test/TestRoleId.sol +0 -14
  785. package/contracts/test/TestService.sol +0 -32
  786. package/contracts/test/TestToken.sol +0 -26
  787. package/contracts/test/TestVersion.sol +0 -44
  788. package/contracts/test/TestVersionable.sol +0 -17
  789. package/contracts/types/ChainId.sol +0 -38
  790. package/contracts/types/Fee.sol +0 -51
  791. package/contracts/types/NftIdSet.sol +0 -60
  792. package/contracts/types/ObjectType.sol +0 -115
  793. package/contracts/types/RoleId.sol +0 -38
  794. package/contracts/types/Version.sol +0 -95
@@ -0,0 +1,1174 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
5
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
6
+
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IStaking} from "./IStaking.sol";
9
+ import {ITargetLimitHandler} from "./ITargetLimitHandler.sol";
10
+
11
+ import {Amount, AmountLib} from "../type/Amount.sol";
12
+ import {ChainId, ChainIdLib} from "../type/ChainId.sol";
13
+ import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
14
+ import {KeyValueStore} from "../shared/KeyValueStore.sol";
15
+ import {NftId, NftIdLib} from "../type/NftId.sol";
16
+ import {NftIdSet} from "../shared/NftIdSet.sol";
17
+ import {ObjectType} from "../type/ObjectType.sol";
18
+ import {PROTOCOL} from "../type/ObjectType.sol";
19
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
20
+ import {StakingLib} from "./StakingLib.sol";
21
+ import {StakingLifecycle} from "./StakingLifecycle.sol";
22
+ import {StakingReader} from "./StakingReader.sol";
23
+ import {TargetManagerLib} from "./TargetManagerLib.sol";
24
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
25
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
26
+
27
+
28
+ contract StakingStore is
29
+ Initializable,
30
+ AccessManaged,
31
+ KeyValueStore,
32
+ StakingLifecycle
33
+ {
34
+
35
+ // token
36
+ error ErrorStakingStoreTokenNotRegistered(ChainId chainId, address token);
37
+ error ErrorStakingStoreTokenAlreadyAdded(ChainId chainId, address token);
38
+ error ErrorStakingStoreTokenUnknown(ChainId chainId, address token);
39
+
40
+ // target
41
+ error ErrorStakingStoreTargetNotInitialized(NftId targetNftId);
42
+ error ErrorStakingStoreLimitNotInitialized(NftId targetNftId);
43
+
44
+ // in/decreasing reward reserves
45
+ error ErrorStakingStoreNotTarget(NftId targetNftId);
46
+ error ErrorStakingStoreRewardReservesInsufficient(NftId targetNftId, Amount reserveAmount, Amount claimedAmount);
47
+
48
+ // stakes
49
+ error ErrorStakingStoreStakesExceedingTargetMaxAmount(NftId targetNftId, Amount stakeLimitAmount, Amount newIStaking);
50
+ error ErrorStakingStoreStakeNotInitialized(NftId nftId);
51
+
52
+ // creating and updating of staking balance
53
+ error ErrorStakingStoreStakeBalanceAlreadyInitialized(NftId nftId);
54
+ error ErrorStakingStoreStakeBalanceNotInitialized(NftId nftI);
55
+
56
+ // creating and updating of tvl balance
57
+ error ErrorStakingStoreTvlBalanceAlreadyInitialized(NftId nftId, address token);
58
+ error ErrorStakingStoreTvlBalanceNotInitialized(NftId nftId, address token);
59
+
60
+ IRegistry private _registry;
61
+ ITargetLimitHandler private _targetLimitHandler;
62
+ StakingReader private _reader;
63
+ NftIdSet private _targetNftIdSet;
64
+
65
+
66
+ // stakes
67
+ mapping(NftId stakeNftId => IStaking.StakeInfo) private _stakeInfo;
68
+
69
+ // targets
70
+ mapping(NftId targetNftId => IStaking.TargetInfo) private _targetInfo;
71
+ mapping(NftId targetNftId => IStaking.LimitInfo) private _limitInfo;
72
+ mapping(NftId targetNftId => mapping(address token => IStaking.TvlInfo)) private _tvlInfo;
73
+ mapping(NftId targetNftId => address [] token) private _targetToken;
74
+
75
+ // staking rate
76
+ mapping(ChainId chainId => mapping(address token => IStaking.TokenInfo)) private _tokenInfo;
77
+
78
+
79
+ constructor(
80
+ IRegistry registry,
81
+ StakingReader reader
82
+ )
83
+ AccessManaged(msg.sender)
84
+ {
85
+ // set final authority
86
+ setAuthority(registry.getAuthority());
87
+
88
+ // set internal variables
89
+ _registry = registry;
90
+ _reader = reader;
91
+ _targetNftIdSet = new NftIdSet();
92
+
93
+ // register protocol target
94
+ _createTarget(
95
+ NftIdLib.toNftId(1101),
96
+ PROTOCOL(),
97
+ TargetManagerLib.getDefaultLockingPeriod(),
98
+ TargetManagerLib.getDefaultRewardRate(),
99
+ false); // no parameter check
100
+ }
101
+
102
+
103
+ function initialize(
104
+ address targetLimitHandler
105
+ )
106
+ external
107
+ initializer()
108
+ {
109
+ _targetLimitHandler = ITargetLimitHandler(targetLimitHandler);
110
+ }
111
+
112
+
113
+ //--- dependency management ---------------------------------------------//
114
+
115
+ function setStakingReader(address reader)
116
+ external
117
+ restricted()
118
+ {
119
+ address oldReader = address(_reader);
120
+ _reader = StakingReader(reader);
121
+
122
+ emit IStaking.LogStakingStakingReaderSet(reader, oldReader);
123
+ }
124
+
125
+
126
+ function setTargetLimitHandler(address targetLimitHandler )
127
+ external
128
+ restricted()
129
+ {
130
+ address oldTargetHandler = address(_targetLimitHandler);
131
+ _targetLimitHandler = ITargetLimitHandler(targetLimitHandler );
132
+
133
+ emit IStaking.LogStakingTargetHandlerSet(targetLimitHandler , oldTargetHandler);
134
+ }
135
+
136
+ //--- token management --------------------------------------------------//
137
+
138
+ /// @dev Registers a token for tvl management.
139
+ function addToken(
140
+ ChainId chainId,
141
+ address token
142
+ )
143
+ external
144
+ restricted() // token registry via staking
145
+ {
146
+ // checks
147
+ IStaking.TokenInfo storage info = _tokenInfo[chainId][token];
148
+
149
+ // check token is not yet registered
150
+ if (info.lastUpdateIn.gtz()) {
151
+ revert ErrorStakingStoreTokenAlreadyAdded(chainId, token);
152
+ }
153
+
154
+ info.stakingRate = UFixedLib.zero();
155
+ info.lastUpdateIn = BlocknumberLib.current();
156
+
157
+ // logging
158
+ emit IStaking.LogStakingTokenAdded(chainId, token);
159
+ }
160
+
161
+
162
+ /// @dev Sets the staking rate for the token.
163
+ function setStakingRate(
164
+ ChainId chainId,
165
+ address token,
166
+ UFixed stakingRate
167
+ )
168
+ external
169
+ restricted() // staking
170
+ returns (
171
+ UFixed oldStakingRate,
172
+ Blocknumber lastUpdatedIn
173
+ )
174
+ {
175
+ IStaking.TokenInfo storage info = _tokenInfo[chainId][token];
176
+ if (info.lastUpdateIn.eqz()) {
177
+ revert ErrorStakingStoreTokenUnknown(chainId, token);
178
+ }
179
+
180
+ // get previous values
181
+ oldStakingRate = info.stakingRate;
182
+ lastUpdatedIn = info.lastUpdateIn;
183
+
184
+ // update values
185
+ info.stakingRate = stakingRate;
186
+ info.lastUpdateIn = BlocknumberLib.current();
187
+ }
188
+
189
+ //--- target management -------------------------------------------------//
190
+
191
+ function createTarget(
192
+ NftId targetNftId,
193
+ ObjectType objectType,
194
+ Seconds lockingPeriod,
195
+ UFixed rewardRate
196
+ )
197
+ external
198
+ restricted() // staking
199
+ {
200
+ _createTarget(targetNftId, objectType, lockingPeriod, rewardRate, true);
201
+ }
202
+
203
+
204
+ function setLockingPeriod(
205
+ NftId targetNftId,
206
+ Seconds lockingPeriod
207
+ )
208
+ external
209
+ restricted() // staking
210
+ returns (
211
+ Seconds oldLockingPeriod,
212
+ Blocknumber lastUpdatedIn
213
+ )
214
+ {
215
+ TargetManagerLib.checkLockingPeriod(targetNftId, lockingPeriod);
216
+
217
+ IStaking.TargetInfo storage targetInfo;
218
+ (targetInfo, lastUpdatedIn) = _verifyAndUpdateTarget(targetNftId);
219
+
220
+ oldLockingPeriod = targetInfo.lockingPeriod;
221
+ targetInfo.lockingPeriod = lockingPeriod;
222
+ }
223
+
224
+
225
+ function setRewardRate(
226
+ NftId targetNftId,
227
+ UFixed rewardRate
228
+ )
229
+ external
230
+ restricted() // staking
231
+ returns (
232
+ UFixed oldRewardRate,
233
+ Blocknumber lastUpdatedIn
234
+ )
235
+ {
236
+ TargetManagerLib.checkRewardRate(targetNftId, rewardRate);
237
+
238
+ IStaking.TargetInfo storage targetInfo;
239
+ (targetInfo, lastUpdatedIn) = _verifyAndUpdateTarget(targetNftId);
240
+
241
+ oldRewardRate = targetInfo.rewardRate;
242
+ targetInfo.rewardRate = rewardRate;
243
+ }
244
+
245
+
246
+ // TODO refactor to set limits functionality
247
+ function setMaxStakedAmount(
248
+ NftId targetNftId,
249
+ Amount stakeLimitAmount
250
+ )
251
+ external
252
+ restricted() // staking
253
+ returns (
254
+ Amount oldLimitAmount,
255
+ Blocknumber lastUpdatedIn
256
+ )
257
+ {
258
+ IStaking.TargetInfo storage targetInfo;
259
+ (targetInfo, lastUpdatedIn) = _verifyAndUpdateTarget(targetNftId);
260
+
261
+ oldLimitAmount = targetInfo.limitAmount;
262
+ targetInfo.limitAmount = stakeLimitAmount;
263
+
264
+ emit IStaking.LogStakingTargetMaxStakedAmountSet(targetNftId, stakeLimitAmount, lastUpdatedIn);
265
+
266
+ }
267
+
268
+
269
+ function setTargetLimits(
270
+ NftId targetNftId,
271
+ Amount marginAmount,
272
+ Amount hardLimitAmount
273
+ )
274
+ external
275
+ virtual
276
+ restricted()
277
+ {
278
+ // checks
279
+ IStaking.LimitInfo storage limitInfo = _getAndVerifyLimit(targetNftId);
280
+ Blocknumber lastUpdateIn = limitInfo.lastUpdateIn;
281
+
282
+ // effects
283
+ limitInfo.marginAmount = marginAmount;
284
+ limitInfo.hardLimitAmount = hardLimitAmount;
285
+ limitInfo.lastUpdateIn = BlocknumberLib.current();
286
+
287
+ // logging
288
+ emit IStaking.LogStakingTargetLimitsUpdated(
289
+ targetNftId,
290
+ marginAmount,
291
+ hardLimitAmount,
292
+ lastUpdateIn);
293
+ }
294
+
295
+
296
+ function addTargetToken(
297
+ NftId targetNftId,
298
+ address token
299
+ )
300
+ external
301
+ restricted()
302
+ {
303
+ // checks
304
+
305
+ // skip registering if tvl balance has already been initialized
306
+ IStaking.TvlInfo storage tvlInfo = _tvlInfo[targetNftId][token];
307
+ if (tvlInfo.lastUpdateIn.gtz()) {
308
+ return;
309
+ }
310
+
311
+ // check target exists
312
+ _getAndVerifyTarget(targetNftId);
313
+
314
+ // check token is known for chain id of target
315
+ ChainId chainId = ChainIdLib.fromNftId(targetNftId);
316
+ if (_tokenInfo[chainId][token].lastUpdateIn.eqz()) {
317
+ revert ErrorStakingStoreTokenUnknown(chainId, token);
318
+ }
319
+
320
+ // effects
321
+ tvlInfo.tvlAmount = AmountLib.zero();
322
+ tvlInfo.lastUpdateIn = BlocknumberLib.current();
323
+
324
+ // add token to list of know tokens for target
325
+ _targetToken[targetNftId].push(token);
326
+ }
327
+
328
+
329
+ function refillRewardReserves(
330
+ NftId targetNftId,
331
+ Amount dipAmount
332
+ )
333
+ external
334
+ restricted()
335
+ returns (Amount newReserveBalance)
336
+ {
337
+ // checks
338
+ IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(targetNftId);
339
+ Blocknumber lastUpdateIn = targetInfo.lastUpdateIn;
340
+
341
+ // effects
342
+ targetInfo.reserveAmount = targetInfo.reserveAmount + dipAmount;
343
+ targetInfo.lastUpdateIn = BlocknumberLib.current();
344
+
345
+ // logging
346
+ newReserveBalance = targetInfo.reserveAmount;
347
+ emit IStaking.LogStakingRewardReservesRefilled(
348
+ targetNftId,
349
+ dipAmount,
350
+ _registry.ownerOf(targetNftId),
351
+ newReserveBalance,
352
+ lastUpdateIn);
353
+ }
354
+
355
+
356
+ function withdrawRewardReserves(
357
+ NftId targetNftId,
358
+ Amount dipAmount
359
+ )
360
+ external
361
+ restricted()
362
+ returns (Amount newReserveBalance)
363
+ {
364
+ // checks
365
+ IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(targetNftId);
366
+
367
+ // effects
368
+ Blocknumber lastUpdateIn = _decreaseReserves(targetNftId, targetInfo, dipAmount);
369
+
370
+ // logging
371
+ newReserveBalance = targetInfo.reserveAmount;
372
+ emit IStaking.LogStakingRewardReservesWithdrawn(
373
+ targetNftId,
374
+ dipAmount,
375
+ _registry.ownerOf(targetNftId),
376
+ newReserveBalance,
377
+ lastUpdateIn);
378
+ }
379
+
380
+
381
+ //--- tvl specific functions -------------------------------------//
382
+
383
+ function increaseTotalValueLocked(
384
+ NftId targetNftId,
385
+ address token,
386
+ Amount amount
387
+ )
388
+ external
389
+ restricted()
390
+ returns (Amount newBalance)
391
+ {
392
+ // checks
393
+ IStaking.TvlInfo storage tvlInfo = _getAndVerifyTvl(targetNftId, token);
394
+ Blocknumber lastUpdateIn = tvlInfo.lastUpdateIn;
395
+
396
+ // effects
397
+ // update tvl balance and adapts required stakes if necessary
398
+ tvlInfo.tvlAmount = tvlInfo.tvlAmount + amount;
399
+ _checkAndUpdateTargetLimit(targetNftId, token, tvlInfo);
400
+ tvlInfo.lastUpdateIn = BlocknumberLib.current();
401
+ newBalance = tvlInfo.tvlAmount;
402
+
403
+ // logging
404
+ emit IStaking.LogStakingTvlIncreased(targetNftId, token, amount, newBalance, lastUpdateIn);
405
+ }
406
+
407
+
408
+ function decreaseTotalValueLocked(
409
+ NftId targetNftId,
410
+ address token,
411
+ Amount amount
412
+ )
413
+ external
414
+ restricted()
415
+ returns (Amount newBalance)
416
+ {
417
+ // checks
418
+ IStaking.TvlInfo storage tvlInfo = _getAndVerifyTvl(targetNftId, token);
419
+ Blocknumber lastUpdateIn = tvlInfo.lastUpdateIn;
420
+
421
+ // effects
422
+ // update tvl balance and adapts required stakes if necessary
423
+ tvlInfo.tvlAmount = tvlInfo.tvlAmount - amount;
424
+ _checkAndUpdateTargetLimit(targetNftId, token, tvlInfo);
425
+ tvlInfo.lastUpdateIn = BlocknumberLib.current();
426
+ newBalance = tvlInfo.tvlAmount;
427
+
428
+ // logging
429
+ emit IStaking.LogStakingTvlDecreased(targetNftId, token, amount, newBalance, lastUpdateIn);
430
+ }
431
+
432
+
433
+ function updateTargetLimit(NftId targetNftId)
434
+ external
435
+ restricted()
436
+ returns (Amount stakeLimitAmount)
437
+ {
438
+ return _updateTargetLimit(targetNftId);
439
+ }
440
+
441
+
442
+ function _checkAndUpdateTargetLimit(
443
+ NftId targetNftId,
444
+ address token,
445
+ IStaking.TvlInfo storage tvlInfo
446
+ )
447
+ internal
448
+ {
449
+ // update counter
450
+ tvlInfo.updatesCounter++;
451
+
452
+ // check if upgrade is necessary
453
+ bool updateRequired = _targetLimitHandler.isLimitUpdateRequired(
454
+ targetNftId,
455
+ token,
456
+ tvlInfo.updatesCounter,
457
+ tvlInfo.tvlBaselineAmount,
458
+ tvlInfo.tvlAmount);
459
+
460
+ if (updateRequired) {
461
+ // reset baseline and counter
462
+ tvlInfo.tvlBaselineAmount = tvlInfo.tvlAmount;
463
+ tvlInfo.updatesCounter = 0;
464
+
465
+ // update limit
466
+ _updateTargetLimit(targetNftId);
467
+ }
468
+ }
469
+
470
+
471
+ function _updateTargetLimit(NftId targetNftId)
472
+ internal
473
+ returns (Amount limitAmount)
474
+ {
475
+ // checks
476
+ IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(targetNftId);
477
+ IStaking.LimitInfo storage limitInfo = _getAndVerifyLimit(targetNftId);
478
+ Blocknumber lastUpdateIn = limitInfo.lastUpdateIn;
479
+
480
+ // calculate max stake amount
481
+ Amount requiredStakeAmount = getRequiredStakeBalance(targetNftId);
482
+ limitAmount = AmountLib.min(
483
+ targetInfo.limitAmount,
484
+ requiredStakeAmount + limitInfo.marginAmount);
485
+
486
+ limitAmount = AmountLib.min(
487
+ limitAmount,
488
+ limitInfo.hardLimitAmount);
489
+
490
+ // effects
491
+ targetInfo.limitAmount = limitAmount;
492
+ targetInfo.lastUpdateIn = BlocknumberLib.current();
493
+
494
+ // logging
495
+ emit IStaking.LogStakingTargetLimitUpdated(
496
+ targetNftId,
497
+ targetInfo.limitAmount,
498
+ limitInfo.hardLimitAmount,
499
+ requiredStakeAmount,
500
+ targetInfo.stakedAmount,
501
+ lastUpdateIn);
502
+ }
503
+
504
+ //--- stake specific functions -------------------------------------//
505
+
506
+ function createStake(
507
+ NftId stakeNftId,
508
+ NftId targetNftId,
509
+ address stakeOwner,
510
+ Amount stakeAmount
511
+ )
512
+ external
513
+ restricted()
514
+ returns (Timestamp lockedUntil)
515
+ {
516
+ // checks
517
+ IStaking.StakeInfo storage stakeInfo = _stakeInfo[stakeNftId];
518
+ if (stakeInfo.lastUpdateIn.gtz()) {
519
+ revert ErrorStakingStoreStakeBalanceAlreadyInitialized(stakeNftId);
520
+ }
521
+
522
+ IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(targetNftId);
523
+ _checkMaxStakedAmount(targetNftId, targetInfo, stakeAmount);
524
+
525
+ // effects
526
+ stakeInfo.targetNftId = targetNftId;
527
+ stakeInfo.stakedAmount = AmountLib.zero();
528
+ stakeInfo.rewardAmount = AmountLib.zero();
529
+ stakeInfo.lockedUntil = TimestampLib.current();
530
+ _setStakeLastUpdatesToCurrent(stakeInfo);
531
+
532
+ // logging for creation of empty stake
533
+ emit IStaking.LogStakingStakeCreated(stakeNftId, stakeInfo.targetNftId, stakeInfo.stakedAmount, stakeInfo.lockedUntil, stakeOwner);
534
+
535
+ // process stake amount
536
+ _stake(stakeNftId, stakeInfo, targetInfo, targetInfo.lockingPeriod, stakeAmount);
537
+ }
538
+
539
+
540
+ function stake(
541
+ NftId stakeNftId,
542
+ bool updateRewards,
543
+ bool restakeRewards,
544
+ Seconds additionalLockingPeriod,
545
+ Amount stakeAmount
546
+ )
547
+ external
548
+ restricted()
549
+ {
550
+ // checks
551
+ IStaking.StakeInfo storage stakeInfo = _getAndVerifyStake(stakeNftId);
552
+ IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(stakeInfo.targetNftId);
553
+
554
+ if (updateRewards) {
555
+ _updateRewards(stakeNftId, stakeInfo, targetInfo);
556
+ }
557
+
558
+ if (restakeRewards) {
559
+ _restakeRewards(stakeNftId, stakeInfo, targetInfo);
560
+ }
561
+
562
+ _stake(stakeNftId, stakeInfo, targetInfo, additionalLockingPeriod, stakeAmount);
563
+ }
564
+
565
+
566
+ function unstake(
567
+ NftId stakeNftId,
568
+ bool updateRewards,
569
+ bool restakeRewards,
570
+ Amount maxUnstakeAmount
571
+ )
572
+ external
573
+ restricted()
574
+ returns (Amount unstakedAmount)
575
+ {
576
+ // checks
577
+ IStaking.StakeInfo storage stakeInfo = _getAndVerifyStake(stakeNftId);
578
+ IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(stakeInfo.targetNftId);
579
+
580
+ if (updateRewards) {
581
+ _updateRewards(stakeNftId, stakeInfo, targetInfo);
582
+ }
583
+
584
+ if (restakeRewards) {
585
+ _restakeRewards(stakeNftId, stakeInfo, targetInfo);
586
+ }
587
+
588
+ return _unstake(stakeNftId, stakeInfo, targetInfo, maxUnstakeAmount);
589
+ }
590
+
591
+
592
+ function updateRewards(NftId stakeNftId)
593
+ external
594
+ restricted()
595
+ {
596
+ // checks
597
+ IStaking.StakeInfo storage stakeInfo = _getAndVerifyStake(stakeNftId);
598
+ IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(stakeInfo.targetNftId);
599
+ _updateRewards(stakeNftId, stakeInfo, targetInfo);
600
+ }
601
+
602
+
603
+ function restakeRewards(
604
+ NftId stakeNftId,
605
+ bool updateRewards
606
+ )
607
+ external
608
+ restricted()
609
+ {
610
+ // checks
611
+ IStaking.StakeInfo storage stakeInfo = _getAndVerifyStake(stakeNftId);
612
+ IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(stakeInfo.targetNftId);
613
+
614
+ if (updateRewards) {
615
+ _updateRewards(stakeNftId, stakeInfo, targetInfo);
616
+ }
617
+
618
+ _restakeRewards(stakeNftId, stakeInfo, targetInfo);
619
+ }
620
+
621
+
622
+ function claimRewards(
623
+ NftId stakeNftId,
624
+ bool updateRewards,
625
+ Amount maxClaimAmount
626
+ )
627
+ external
628
+ restricted()
629
+ returns (Amount claimedAmount)
630
+ {
631
+ // checks
632
+ IStaking.StakeInfo storage stakeInfo = _getAndVerifyStake(stakeNftId);
633
+ IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(stakeInfo.targetNftId);
634
+
635
+ if (updateRewards) {
636
+ _updateRewards(stakeNftId, stakeInfo, targetInfo);
637
+ }
638
+
639
+ claimedAmount = _claimRewards(stakeNftId, stakeInfo, targetInfo, maxClaimAmount);
640
+ }
641
+
642
+ //--- view functions -----------------------------------------------//
643
+
644
+ function getStakingReader() external view returns (StakingReader stakingReader){
645
+ return _reader;
646
+ }
647
+
648
+ function getTargetManager() external view returns (ITargetLimitHandler targetLimitHandler ){
649
+ return _targetLimitHandler;
650
+ }
651
+
652
+
653
+ function exists(NftId stakeNftId) external view returns (bool) {
654
+ return _stakeInfo[stakeNftId].lastUpdateIn.gtz();
655
+ }
656
+
657
+
658
+ function getRequiredStakeBalance(NftId targetNftId)
659
+ public
660
+ view
661
+ returns (Amount requiredStakeAmount)
662
+ {
663
+ address [] memory tokens = _targetToken[targetNftId];
664
+ if (tokens.length == 0) {
665
+ return AmountLib.zero();
666
+ }
667
+
668
+ requiredStakeAmount = AmountLib.zero();
669
+ ChainId targetChainId = _targetInfo[targetNftId].chainId;
670
+ address token;
671
+ Amount tvlAmount;
672
+ UFixed stakingRate;
673
+
674
+ for (uint256 i = 0; i < tokens.length; i++) {
675
+ token = tokens[i];
676
+ tvlAmount = _tvlInfo[targetNftId][token].tvlAmount;
677
+ if (tvlAmount.eqz()) { continue; }
678
+
679
+ stakingRate = _tokenInfo[targetChainId][token].stakingRate;
680
+ if (stakingRate.eqz()) { continue; }
681
+
682
+ requiredStakeAmount = requiredStakeAmount + tvlAmount.multiplyWith(stakingRate);
683
+ }
684
+ }
685
+
686
+
687
+ /// @dev Returns true iff current stake amount is still locked
688
+ function isStakeLocked(NftId stakeNftId) public view returns (bool) {
689
+ return _stakeInfo[stakeNftId].lockedUntil > TimestampLib.current();
690
+ }
691
+
692
+
693
+ /// @dev Returns the stake infos for the specified stake.
694
+ function getStakeInfo(NftId stakeNftId) external view returns (IStaking.StakeInfo memory stakeInfo) {
695
+ return _stakeInfo[stakeNftId];
696
+ }
697
+
698
+
699
+ /// @dev Returns the stake infos for the specified stake.
700
+ function getStakeTarget(NftId stakeNftId) external view returns (NftId targetNftId) {
701
+ return _stakeInfo[stakeNftId].targetNftId;
702
+ }
703
+
704
+
705
+ /// @dev Returns the target infos for the specified target.
706
+ function getTargetInfo(NftId targetNftId) external view returns (IStaking.TargetInfo memory targetInfo) {
707
+ return _targetInfo[targetNftId];
708
+ }
709
+
710
+
711
+ /// @dev Returns the target limit infos for the specified target.
712
+ function getLimitInfo(NftId targetNftId) external view returns (IStaking.LimitInfo memory limitInfo) {
713
+ return _limitInfo[targetNftId];
714
+ }
715
+
716
+
717
+ /// @dev Returns the tvl infos for the specified target.
718
+ function getTvlInfo(NftId targetNftId, address token) external view returns (IStaking.TvlInfo memory tvlInfo) {
719
+ return _tvlInfo[targetNftId][token];
720
+ }
721
+
722
+
723
+ /// @dev Returns the tvl infos for the specified target.
724
+ function getTokenInfo(ChainId chainId, address token) external view returns (IStaking.TokenInfo memory tokenInfo) {
725
+ return _tokenInfo[chainId][token];
726
+ }
727
+
728
+
729
+ function getTargetSet() external view returns (NftIdSet targetNftIdSet) {
730
+ return _targetNftIdSet;
731
+ }
732
+
733
+ //--- internal functions -----------------------------------------------//
734
+
735
+ function _verifyAndUpdateTarget(NftId targetNftId)
736
+ private
737
+ returns (
738
+ IStaking.TargetInfo storage targetInfo,
739
+ Blocknumber lastUpdatedIn
740
+ )
741
+ {
742
+ // checks
743
+ targetInfo = _getAndVerifyTarget(targetNftId);
744
+ lastUpdatedIn = targetInfo.lastUpdateIn;
745
+ targetInfo.lastUpdateIn = BlocknumberLib.current();
746
+ }
747
+
748
+
749
+ function _createTarget(
750
+ NftId targetNftId,
751
+ ObjectType objectType,
752
+ Seconds lockingPeriod,
753
+ UFixed rewardRate,
754
+ bool checkParameters
755
+ )
756
+ private
757
+ {
758
+ // checks
759
+ if (checkParameters) {
760
+ TargetManagerLib.checkTargetParameters(
761
+ _registry,
762
+ _reader,
763
+ targetNftId,
764
+ objectType,
765
+ lockingPeriod,
766
+ rewardRate);
767
+ }
768
+
769
+ // effects
770
+
771
+ // target info
772
+ IStaking.TargetInfo storage targetInfo = _targetInfo[targetNftId];
773
+ targetInfo.stakedAmount = AmountLib.zero();
774
+ targetInfo.rewardAmount = AmountLib.zero();
775
+ targetInfo.reserveAmount = AmountLib.zero();
776
+ targetInfo.limitAmount = AmountLib.max();
777
+
778
+ targetInfo.objectType = objectType;
779
+ targetInfo.lockingPeriod = lockingPeriod;
780
+ targetInfo.rewardRate = rewardRate;
781
+ targetInfo.chainId = ChainIdLib.fromNftId(targetNftId);
782
+ targetInfo.lastUpdateIn = BlocknumberLib.current();
783
+
784
+ // limit info
785
+ IStaking.LimitInfo storage limitInfo = _limitInfo[targetNftId];
786
+ limitInfo.marginAmount = AmountLib.zero();
787
+ limitInfo.hardLimitAmount = AmountLib.max();
788
+ limitInfo.lastUpdateIn = BlocknumberLib.current();
789
+
790
+ // add new target to target set
791
+ _targetNftIdSet.add(targetNftId);
792
+ }
793
+
794
+
795
+ function _spendRewardReserves(
796
+ NftId targetNftId,
797
+ IStaking.TargetInfo storage targetInfo,
798
+ Amount dipAmount
799
+ )
800
+ private
801
+ {
802
+ Blocknumber lastUpdateIn = _decreaseReserves(targetNftId, targetInfo, dipAmount);
803
+
804
+ // logging
805
+ emit IStaking.LogStakingRewardReservesSpent(
806
+ targetNftId,
807
+ dipAmount,
808
+ targetInfo.reserveAmount,
809
+ lastUpdateIn);
810
+ }
811
+
812
+
813
+ function _decreaseReserves(
814
+ NftId targetNftId,
815
+ IStaking.TargetInfo storage targetInfo,
816
+ Amount dipAmount
817
+ )
818
+ private
819
+ returns ( Blocknumber lastUpdateIn)
820
+ {
821
+ lastUpdateIn = targetInfo.lastUpdateIn;
822
+
823
+ // check if reserves are sufficient
824
+ if (dipAmount > targetInfo.reserveAmount) {
825
+ revert ErrorStakingStoreRewardReservesInsufficient(
826
+ targetNftId,
827
+ targetInfo.reserveAmount,
828
+ dipAmount);
829
+ }
830
+
831
+ // effects
832
+ targetInfo.reserveAmount = targetInfo.reserveAmount - dipAmount;
833
+ targetInfo.lastUpdateIn = BlocknumberLib.current();
834
+ }
835
+
836
+
837
+ function _updateRewards(
838
+ NftId stakeNftId,
839
+ IStaking.StakeInfo storage stakeInfo,
840
+ IStaking.TargetInfo storage targetInfo
841
+ )
842
+ internal
843
+ returns (Amount rewardIncreaseAmount)
844
+ {
845
+ // return if reward rate is zero
846
+ if (targetInfo.rewardRate.eqz()) {
847
+ return rewardIncreaseAmount;
848
+ }
849
+
850
+ // get seconds since last update on stake
851
+ Seconds duration = SecondsLib.toSeconds(
852
+ block.timestamp - stakeInfo.lastUpdateAt.toInt());
853
+
854
+ // return if duration is zero
855
+ if (duration.eqz()) {
856
+ return AmountLib.zero();
857
+ }
858
+
859
+ // calculate reward increase since
860
+ rewardIncreaseAmount = StakingLib.calculateRewardAmount(
861
+ targetInfo.rewardRate,
862
+ duration,
863
+ stakeInfo.stakedAmount);
864
+
865
+ // update target + stake
866
+ targetInfo.rewardAmount = targetInfo.rewardAmount + rewardIncreaseAmount;
867
+ stakeInfo.rewardAmount = stakeInfo.rewardAmount + rewardIncreaseAmount;
868
+ Blocknumber lastUpdateIn = _setLastUpdatesToCurrent(stakeInfo, targetInfo);
869
+
870
+ // logging
871
+ emit IStaking.LogStakingStakeRewardsUpdated(
872
+ stakeNftId,
873
+ rewardIncreaseAmount,
874
+ stakeInfo.stakedAmount,
875
+ stakeInfo.rewardAmount,
876
+ stakeInfo.lockedUntil,
877
+ lastUpdateIn);
878
+ }
879
+
880
+
881
+ function _restakeRewards(
882
+ NftId stakeNftId,
883
+ IStaking.StakeInfo storage stakeInfo,
884
+ IStaking.TargetInfo storage targetInfo
885
+ )
886
+ internal
887
+ returns (Amount restakeAmount)
888
+ {
889
+ restakeAmount = stakeInfo.rewardAmount;
890
+
891
+ // return if reward amount is zero
892
+ if (restakeAmount.eqz()) {
893
+ return restakeAmount;
894
+ }
895
+
896
+ // check restaking amount does not exceed target max staked amount
897
+ _checkMaxStakedAmount(stakeInfo.targetNftId, targetInfo, restakeAmount);
898
+
899
+ // use up reserves for newly staked dips
900
+ _spendRewardReserves(stakeInfo.targetNftId, targetInfo, restakeAmount);
901
+
902
+ // update target + stake
903
+ targetInfo.stakedAmount = targetInfo.stakedAmount + restakeAmount;
904
+ targetInfo.rewardAmount = targetInfo.rewardAmount - restakeAmount;
905
+ stakeInfo.stakedAmount = stakeInfo.stakedAmount + restakeAmount;
906
+ stakeInfo.rewardAmount = AmountLib.zero();
907
+ Blocknumber lastUpdateIn = _setLastUpdatesToCurrent(stakeInfo, targetInfo);
908
+
909
+ // logging
910
+ emit IStaking.LogStakingRewardsRestaked(
911
+ stakeNftId,
912
+ restakeAmount,
913
+ stakeInfo.stakedAmount,
914
+ AmountLib.zero(),
915
+ stakeInfo.lockedUntil,
916
+ lastUpdateIn);
917
+ }
918
+
919
+
920
+ function _stake(
921
+ NftId stakeNftId,
922
+ IStaking.StakeInfo storage stakeInfo,
923
+ IStaking.TargetInfo storage targetInfo,
924
+ Seconds maxAdditionalLockingPeriod,
925
+ Amount stakeAmount
926
+ )
927
+ internal
928
+ {
929
+ // return if reward amount is zero
930
+ if (stakeAmount.eqz()) {
931
+ return;
932
+ }
933
+
934
+ // check restaking amount does not exceed target max staked amount
935
+ _checkMaxStakedAmount(stakeInfo.targetNftId, targetInfo, stakeAmount);
936
+
937
+ // update target + stake
938
+ targetInfo.stakedAmount = targetInfo.stakedAmount + stakeAmount;
939
+ stakeInfo.stakedAmount = stakeInfo.stakedAmount + stakeAmount;
940
+
941
+ // increase locked until if applicable
942
+ Seconds additionalLockingPeriod = SecondsLib.min(maxAdditionalLockingPeriod, targetInfo.lockingPeriod);
943
+ if (stakeAmount.gtz() && additionalLockingPeriod.gtz()) {
944
+ stakeInfo.lockedUntil = stakeInfo.lockedUntil.addSeconds(additionalLockingPeriod);
945
+ }
946
+
947
+ Blocknumber lastUpdateIn = _setLastUpdatesToCurrent(stakeInfo, targetInfo);
948
+
949
+ // logging
950
+ emit IStaking.LogStakingStaked(
951
+ stakeNftId,
952
+ stakeAmount,
953
+ stakeInfo.stakedAmount,
954
+ stakeInfo.rewardAmount,
955
+ stakeInfo.lockedUntil,
956
+ lastUpdateIn);
957
+ }
958
+
959
+
960
+ function _claimRewards(
961
+ NftId stakeNftId,
962
+ IStaking.StakeInfo storage stakeInfo,
963
+ IStaking.TargetInfo storage targetInfo,
964
+ Amount maxClaimAmount
965
+ )
966
+ internal
967
+ returns (Amount claimAmount)
968
+ {
969
+ claimAmount = AmountLib.min(maxClaimAmount, stakeInfo.rewardAmount);
970
+
971
+ // return if no rewards to claim
972
+ if (claimAmount.eqz()) {
973
+ return claimAmount;
974
+ }
975
+
976
+ // effects
977
+ // use up reserves for claimed rewards
978
+ _spendRewardReserves(stakeInfo.targetNftId, targetInfo, claimAmount);
979
+
980
+ // update target + stake
981
+ targetInfo.rewardAmount = targetInfo.rewardAmount - claimAmount;
982
+ stakeInfo.rewardAmount = stakeInfo.rewardAmount - claimAmount;
983
+ Blocknumber lastUpdateIn = _setLastUpdatesToCurrent(stakeInfo, targetInfo);
984
+
985
+ // logging
986
+ emit IStaking.LogStakingRewardsClaimed(
987
+ stakeNftId,
988
+ claimAmount,
989
+ stakeInfo.stakedAmount,
990
+ stakeInfo.rewardAmount,
991
+ stakeInfo.lockedUntil,
992
+ lastUpdateIn);
993
+ }
994
+
995
+
996
+ function _unstake(
997
+ NftId stakeNftId,
998
+ IStaking.StakeInfo storage stakeInfo,
999
+ IStaking.TargetInfo storage targetInfo,
1000
+ Amount maxUnstakeAmount
1001
+ )
1002
+ internal
1003
+ returns (Amount unstakedAmount)
1004
+ {
1005
+ unstakedAmount = AmountLib.min(maxUnstakeAmount, stakeInfo.stakedAmount);
1006
+
1007
+ // return if no stakes to claim
1008
+ if (unstakedAmount.eqz()) {
1009
+ return unstakedAmount;
1010
+ }
1011
+
1012
+ // check if stake is still locked
1013
+ if (isStakeLocked(stakeNftId)) {
1014
+ revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
1015
+ }
1016
+
1017
+ // update target + stake
1018
+ targetInfo.stakedAmount = targetInfo.stakedAmount - unstakedAmount;
1019
+ stakeInfo.stakedAmount = stakeInfo.stakedAmount - unstakedAmount;
1020
+ Blocknumber lastUpdateIn = _setLastUpdatesToCurrent(stakeInfo, targetInfo);
1021
+
1022
+ // logging
1023
+ emit IStaking.LogStakingUnstaked(
1024
+ stakeNftId,
1025
+ unstakedAmount,
1026
+ stakeInfo.stakedAmount,
1027
+ stakeInfo.rewardAmount,
1028
+ stakeInfo.lockedUntil,
1029
+ lastUpdateIn);
1030
+ }
1031
+
1032
+
1033
+ function _setLastUpdatesToCurrent(
1034
+ IStaking.StakeInfo storage stakeInfo,
1035
+ IStaking.TargetInfo storage targetInfo
1036
+ )
1037
+ internal
1038
+ returns (Blocknumber lastUpdateIn)
1039
+ {
1040
+ targetInfo.lastUpdateIn = BlocknumberLib.current();
1041
+ lastUpdateIn = _setStakeLastUpdatesToCurrent(stakeInfo);
1042
+ }
1043
+
1044
+
1045
+ function _setStakeLastUpdatesToCurrent(
1046
+ IStaking.StakeInfo storage stakeInfo
1047
+ )
1048
+ internal
1049
+ returns (Blocknumber lastUpdateIn)
1050
+ {
1051
+ lastUpdateIn = stakeInfo.lastUpdateIn;
1052
+ stakeInfo.lastUpdateIn = BlocknumberLib.current();
1053
+ stakeInfo.lastUpdateAt = TimestampLib.current();
1054
+ }
1055
+
1056
+ //--- private stake and target functions --------------------------------//
1057
+
1058
+
1059
+ function _getAndVerifyStake(
1060
+ NftId stakeNftId
1061
+ )
1062
+ private
1063
+ view
1064
+ returns (
1065
+ IStaking.StakeInfo storage stakeInfo
1066
+ )
1067
+ {
1068
+ stakeInfo = _stakeInfo[stakeNftId];
1069
+ if (stakeInfo.lastUpdateIn.eqz()) {
1070
+ revert ErrorStakingStoreStakeNotInitialized(stakeNftId);
1071
+ }
1072
+ }
1073
+
1074
+
1075
+ function _checkMaxStakedAmount(
1076
+ NftId targetNftId,
1077
+ IStaking.TargetInfo storage targetInfo,
1078
+ Amount additionalstakedAmount
1079
+ )
1080
+ private
1081
+ {
1082
+ if (targetInfo.stakedAmount + additionalstakedAmount > targetInfo.limitAmount) {
1083
+ revert IStaking.ErrorStakingTargetMaxStakedAmountExceeded(
1084
+ targetNftId,
1085
+ targetInfo.limitAmount,
1086
+ targetInfo.stakedAmount + additionalstakedAmount);
1087
+ }
1088
+
1089
+ // TODO add check for tvl dependent maximum, see #628
1090
+ }
1091
+
1092
+
1093
+ function _getAndVerifyTarget(
1094
+ NftId targetNftId
1095
+ )
1096
+ private
1097
+ view
1098
+ returns (
1099
+ IStaking.TargetInfo storage targetInfo
1100
+ )
1101
+ {
1102
+ targetInfo = _targetInfo[targetNftId];
1103
+
1104
+ if (targetInfo.lastUpdateIn.eqz()) {
1105
+ revert ErrorStakingStoreTargetNotInitialized(targetNftId);
1106
+ }
1107
+ }
1108
+
1109
+
1110
+ function _getAndVerifyLimit(
1111
+ NftId targetNftId
1112
+ )
1113
+ private
1114
+ view
1115
+ returns (
1116
+ IStaking.LimitInfo storage limitInfo
1117
+ )
1118
+ {
1119
+ limitInfo = _limitInfo[targetNftId];
1120
+
1121
+ if (limitInfo.lastUpdateIn.eqz()) {
1122
+ revert ErrorStakingStoreLimitNotInitialized(targetNftId);
1123
+ }
1124
+ }
1125
+
1126
+ //--- private tvl functions ------------------------------------------------//
1127
+
1128
+ /// @dev Initializes token balance handling for the specified target.
1129
+ function _createTvlBalance(NftId targetNftId, address token)
1130
+ private
1131
+ {
1132
+ IStaking.TvlInfo storage info = _tvlInfo[targetNftId][token];
1133
+
1134
+ if (info.lastUpdateIn.gtz()) {
1135
+ revert ErrorStakingStoreTvlBalanceAlreadyInitialized(targetNftId, token);
1136
+ }
1137
+
1138
+ // set tvl balances to 0 and update last updated in
1139
+ info.tvlAmount = AmountLib.zero();
1140
+ info.lastUpdateIn = BlocknumberLib.current();
1141
+ }
1142
+
1143
+
1144
+ function _updateTvlBalance(
1145
+ NftId targetNftId,
1146
+ address token,
1147
+ Amount newTvlAmount
1148
+ )
1149
+ private
1150
+ returns (
1151
+ Amount oldTvlAmount,
1152
+ Blocknumber lastUpdatedIn
1153
+ )
1154
+ {
1155
+ IStaking.TvlInfo storage tvlInfo = _getAndVerifyTvl(targetNftId, token);
1156
+ oldTvlAmount = tvlInfo.tvlAmount;
1157
+ lastUpdatedIn = tvlInfo.lastUpdateIn;
1158
+
1159
+ tvlInfo.tvlAmount = newTvlAmount;
1160
+ tvlInfo.lastUpdateIn = BlocknumberLib.current();
1161
+ }
1162
+
1163
+
1164
+ function _getAndVerifyTvl(NftId targetNftId, address token)
1165
+ private
1166
+ view
1167
+ returns (IStaking.TvlInfo storage tvlInfo)
1168
+ {
1169
+ tvlInfo = _tvlInfo[targetNftId][token];
1170
+ if (tvlInfo.lastUpdateIn.eqz()) {
1171
+ revert ErrorStakingStoreTvlBalanceNotInitialized(targetNftId, token);
1172
+ }
1173
+ }
1174
+ }