@etherisc/gif-next 0.0.2-96b5b72-170 → 0.0.2-9723682-800

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 (579) hide show
  1. package/README.md +133 -10
  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/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  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 +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +170 -608
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +788 -535
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +277 -127
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +168 -331
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +622 -178
  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 +1472 -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 +2045 -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 +1423 -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 +1639 -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 +2484 -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 +588 -95
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +516 -56
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +587 -218
  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 +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1833 -761
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +535 -192
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +209 -93
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1629 -692
  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 +1 -1
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  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 +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  105. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  106. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +550 -400
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +271 -101
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +384 -86
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +223 -424
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +749 -377
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +235 -628
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +951 -748
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +267 -113
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +370 -252
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +230 -88
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +497 -331
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +260 -114
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +320 -9
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +367 -16
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +454 -69
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +217 -75
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +370 -226
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  168. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +289 -66
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +507 -384
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +236 -122
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +261 -333
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +234 -108
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +421 -513
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +475 -58
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +280 -127
  191. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  193. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  195. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/Registry.sol/Registry.json +917 -122
  197. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2147 -0
  199. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  201. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +332 -245
  203. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +207 -91
  205. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  207. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  209. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  211. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  213. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +315 -139
  215. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Component.sol/Component.json +178 -196
  217. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1060 -156
  219. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +854 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  229. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +207 -40
  231. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  233. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +173 -113
  235. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  236. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +46 -14
  237. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  238. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  239. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +42 -1
  241. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  243. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +173 -0
  245. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IService.sol/IService.json +103 -2
  248. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  249. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  250. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  251. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +182 -271
  252. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  253. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  254. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  255. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  256. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  257. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  258. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +45 -55
  260. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  261. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  262. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +148 -90
  264. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  265. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  266. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Service.sol/Service.json +96 -102
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  272. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  274. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  275. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1325 -186
  276. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  277. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +714 -63
  278. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  279. package/artifacts/contracts/staking/Staking.sol/Staking.json +1499 -299
  280. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  282. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  284. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +278 -76
  286. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +616 -0
  288. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +804 -176
  290. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +233 -83
  292. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2297 -0
  294. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  295. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +617 -0
  296. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  297. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  298. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Amount.sol/AmountLib.json +122 -5
  300. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
  302. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  304. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  306. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/Fee.sol/FeeLib.json +119 -58
  308. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  310. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  311. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  312. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +66 -4
  314. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  315. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  316. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +153 -4
  318. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  320. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  322. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  324. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  326. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
  328. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +143 -2
  330. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  332. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  334. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  336. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  338. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  340. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  342. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  344. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  346. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  347. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  348. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  349. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  350. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  352. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  353. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  354. package/contracts/accounting/AccountingService.sol +274 -0
  355. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  356. package/contracts/accounting/IAccountingService.sol +47 -0
  357. package/contracts/authorization/AccessAdmin.sol +780 -0
  358. package/contracts/authorization/AccessAdminLib.sol +396 -0
  359. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  360. package/contracts/authorization/Authorization.sol +169 -0
  361. package/contracts/authorization/IAccess.sol +67 -0
  362. package/contracts/authorization/IAccessAdmin.sol +144 -0
  363. package/contracts/authorization/IAuthorization.sol +27 -0
  364. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  365. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  366. package/contracts/distribution/BasicDistribution.sol +141 -0
  367. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  368. package/contracts/distribution/Distribution.sol +135 -173
  369. package/contracts/distribution/DistributionService.sol +313 -214
  370. package/contracts/distribution/DistributionServiceManager.sol +13 -25
  371. package/contracts/distribution/IDistributionComponent.sol +22 -48
  372. package/contracts/distribution/IDistributionService.sol +61 -33
  373. package/contracts/examples/fire/DamageLevel.sol +59 -0
  374. package/contracts/examples/fire/FirePool.sol +86 -0
  375. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  376. package/contracts/examples/fire/FireProduct.sol +433 -0
  377. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  378. package/contracts/examples/fire/FireUSD.sol +26 -0
  379. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  380. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  381. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  382. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  383. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  384. package/contracts/examples/unpermissioned/SimpleProduct.sol +391 -0
  385. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  386. package/contracts/instance/BundleSet.sol +130 -0
  387. package/contracts/instance/IInstance.sol +117 -49
  388. package/contracts/instance/IInstanceService.sol +80 -37
  389. package/contracts/instance/Instance.sol +251 -134
  390. package/contracts/instance/InstanceAdmin.sol +383 -0
  391. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  392. package/contracts/instance/InstanceReader.sol +505 -241
  393. package/contracts/instance/InstanceService.sol +387 -196
  394. package/contracts/instance/InstanceServiceManager.sol +14 -29
  395. package/contracts/instance/InstanceStore.sol +151 -64
  396. package/contracts/instance/RiskSet.sol +126 -0
  397. package/contracts/instance/base/BalanceStore.sol +121 -0
  398. package/contracts/instance/base/Cloneable.sol +2 -25
  399. package/contracts/instance/base/ObjectCounter.sol +20 -0
  400. package/contracts/instance/base/ObjectLifecycle.sol +108 -0
  401. package/contracts/instance/base/ObjectSet.sol +77 -0
  402. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  403. package/contracts/instance/module/IBundle.sol +6 -8
  404. package/contracts/instance/module/IComponents.sol +40 -19
  405. package/contracts/instance/module/IDistribution.sol +21 -9
  406. package/contracts/instance/module/IPolicy.sol +57 -30
  407. package/contracts/instance/module/IRisk.sol +5 -0
  408. package/contracts/mock/Dip.sol +26 -0
  409. package/contracts/oracle/BasicOracle.sol +45 -0
  410. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  411. package/contracts/oracle/IOracle.sol +41 -0
  412. package/contracts/oracle/IOracleComponent.sol +33 -0
  413. package/contracts/oracle/IOracleService.sol +66 -0
  414. package/contracts/oracle/Oracle.sol +154 -0
  415. package/contracts/oracle/OracleService.sol +310 -0
  416. package/contracts/oracle/OracleServiceManager.sol +39 -0
  417. package/contracts/pool/BasicPool.sol +162 -0
  418. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  419. package/contracts/pool/BundleService.sol +250 -246
  420. package/contracts/pool/BundleServiceManager.sol +13 -25
  421. package/contracts/pool/IBundleService.sol +47 -49
  422. package/contracts/pool/IPoolComponent.sol +21 -73
  423. package/contracts/pool/IPoolService.sol +112 -56
  424. package/contracts/pool/Pool.sol +199 -168
  425. package/contracts/pool/PoolLib.sol +341 -0
  426. package/contracts/pool/PoolService.sol +475 -264
  427. package/contracts/pool/PoolServiceManager.sol +12 -24
  428. package/contracts/product/ApplicationService.sol +222 -81
  429. package/contracts/product/ApplicationServiceManager.sol +12 -9
  430. package/contracts/product/BasicProduct.sol +49 -0
  431. package/contracts/product/BasicProductAuthorization.sol +63 -0
  432. package/contracts/product/ClaimService.sol +389 -190
  433. package/contracts/product/ClaimServiceManager.sol +12 -9
  434. package/contracts/product/IApplicationService.sol +30 -4
  435. package/contracts/product/IClaimService.sol +48 -6
  436. package/contracts/product/IPolicyService.sol +62 -40
  437. package/contracts/product/IPricingService.sol +14 -11
  438. package/contracts/product/IProductComponent.sol +30 -9
  439. package/contracts/product/IRiskService.sol +48 -0
  440. package/contracts/product/PolicyService.sol +503 -234
  441. package/contracts/product/PolicyServiceLib.sol +139 -0
  442. package/contracts/product/PolicyServiceManager.sol +12 -27
  443. package/contracts/product/PricingService.sol +133 -102
  444. package/contracts/product/PricingServiceManager.sol +12 -24
  445. package/contracts/product/Product.sol +255 -151
  446. package/contracts/product/RiskService.sol +190 -0
  447. package/contracts/product/RiskServiceManager.sol +39 -0
  448. package/contracts/registry/ChainNft.sol +72 -39
  449. package/contracts/registry/IRegistry.sol +100 -35
  450. package/contracts/registry/IRegistryService.sol +28 -35
  451. package/contracts/registry/IRelease.sol +29 -0
  452. package/contracts/registry/ITransferInterceptor.sol +1 -2
  453. package/contracts/registry/Registry.sol +450 -219
  454. package/contracts/registry/RegistryAdmin.sol +188 -0
  455. package/contracts/registry/RegistryAuthorization.sol +284 -0
  456. package/contracts/registry/RegistryService.sol +75 -138
  457. package/contracts/registry/RegistryServiceManager.sol +23 -30
  458. package/contracts/registry/ReleaseAdmin.sol +195 -0
  459. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  460. package/contracts/registry/ReleaseRegistry.sol +520 -0
  461. package/contracts/registry/ServiceAuthorizationV3.sol +345 -0
  462. package/contracts/registry/TokenRegistry.sol +262 -64
  463. package/contracts/shared/Component.sol +134 -101
  464. package/contracts/shared/ComponentService.sol +627 -98
  465. package/contracts/shared/ComponentServiceManager.sol +38 -0
  466. package/contracts/shared/ContractLib.sol +311 -0
  467. package/contracts/shared/IComponent.sol +22 -22
  468. package/contracts/shared/IComponentService.sol +111 -0
  469. package/contracts/shared/IInstanceLinkedComponent.sol +10 -32
  470. package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
  471. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  472. package/contracts/shared/INftOwnable.sol +5 -1
  473. package/contracts/shared/IPolicyHolder.sol +12 -17
  474. package/contracts/shared/IRegisterable.sol +22 -1
  475. package/contracts/shared/IService.sol +11 -6
  476. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  477. package/contracts/shared/InstanceLinkedComponent.sol +115 -192
  478. package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
  479. package/contracts/shared/Lifecycle.sol +88 -0
  480. package/contracts/shared/NftIdSet.sol +65 -0
  481. package/contracts/shared/NftOwnable.sol +35 -24
  482. package/contracts/shared/PolicyHolder.sol +19 -50
  483. package/contracts/shared/Registerable.sol +54 -23
  484. package/contracts/shared/RegistryLinked.sol +9 -14
  485. package/contracts/shared/Service.sol +36 -41
  486. package/contracts/shared/TokenHandler.sol +310 -26
  487. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  488. package/contracts/staking/IStaking.sol +175 -10
  489. package/contracts/staking/IStakingService.sol +106 -41
  490. package/contracts/staking/Staking.sol +567 -27
  491. package/contracts/staking/StakingLib.sol +281 -0
  492. package/contracts/staking/StakingLifecycle.sol +23 -0
  493. package/contracts/staking/StakingManager.sol +24 -18
  494. package/contracts/staking/StakingReader.sol +199 -0
  495. package/contracts/staking/StakingService.sol +313 -49
  496. package/contracts/staking/StakingServiceManager.sol +12 -8
  497. package/contracts/staking/StakingStore.sol +606 -0
  498. package/contracts/staking/TargetManagerLib.sol +211 -0
  499. package/contracts/type/AddressSet.sol +1 -1
  500. package/contracts/type/Amount.sol +44 -3
  501. package/contracts/type/Blocknumber.sol +26 -3
  502. package/contracts/type/ClaimId.sol +6 -1
  503. package/contracts/type/Fee.sol +22 -21
  504. package/contracts/type/Key32.sol +2 -2
  505. package/contracts/type/Key32Set.sol +62 -0
  506. package/contracts/type/NftId.sol +21 -16
  507. package/contracts/type/NftIdSet.sol +1 -1
  508. package/contracts/type/ObjectType.sol +204 -63
  509. package/contracts/type/PayoutId.sol +10 -10
  510. package/contracts/type/Referral.sol +2 -1
  511. package/contracts/type/RequestId.sol +75 -0
  512. package/contracts/type/RiskId.sol +39 -7
  513. package/contracts/type/RoleId.sol +122 -74
  514. package/contracts/type/Seconds.sol +52 -1
  515. package/contracts/type/Selector.sol +107 -0
  516. package/contracts/type/StateId.sol +41 -2
  517. package/contracts/type/String.sol +65 -0
  518. package/contracts/type/Timestamp.sol +16 -7
  519. package/contracts/type/UFixed.sol +61 -125
  520. package/contracts/type/Version.sol +58 -7
  521. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  522. package/contracts/{shared → upgradeability}/ProxyManager.sol +115 -38
  523. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +8 -4
  524. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  525. package/package.json +12 -8
  526. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  527. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  528. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  529. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  530. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  531. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  532. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  533. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  534. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  535. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  536. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  537. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  538. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  539. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  540. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  541. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  542. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  543. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  544. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  545. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  546. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  547. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -864
  548. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  549. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  550. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  551. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  552. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  553. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -620
  554. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  555. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  556. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  558. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  559. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  560. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  561. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  562. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  563. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  564. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  565. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  566. package/contracts/instance/BundleManager.sol +0 -126
  567. package/contracts/instance/InstanceAccessManager.sol +0 -543
  568. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  569. package/contracts/instance/base/Lifecycle.sol +0 -121
  570. package/contracts/instance/base/ObjectManager.sol +0 -82
  571. package/contracts/instance/module/IAccess.sol +0 -54
  572. package/contracts/instance/module/ISetup.sol +0 -33
  573. package/contracts/instance/module/ITreasury.sol +0 -23
  574. package/contracts/product/IProductService.sol +0 -40
  575. package/contracts/product/ProductService.sol +0 -210
  576. package/contracts/product/ProductServiceManager.sol +0 -54
  577. package/contracts/registry/RegistryAccessManager.sol +0 -207
  578. package/contracts/registry/ReleaseManager.sol +0 -360
  579. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -0,0 +1,606 @@
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
+
6
+ import {IRegistry} from "../registry/IRegistry.sol";
7
+ import {IStaking} from "./IStaking.sol";
8
+
9
+ import {Amount, AmountLib} from "../type/Amount.sol";
10
+ import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
11
+ import {KeyValueStore} from "../shared/KeyValueStore.sol";
12
+ import {KEEP_STATE} from "../type/StateId.sol";
13
+ import {NftId, NftIdLib} from "../type/NftId.sol";
14
+ import {NftIdSet} from "../shared/NftIdSet.sol";
15
+ import {PROTOCOL, STAKE, TARGET} from "../type/ObjectType.sol";
16
+ import {StakingReader} from "./StakingReader.sol";
17
+ import {TargetManagerLib} from "./TargetManagerLib.sol";
18
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
19
+ import {StakingLifecycle} from "./StakingLifecycle.sol";
20
+ import {UFixed} from "../type/UFixed.sol";
21
+
22
+
23
+ contract StakingStore is
24
+ AccessManaged,
25
+ KeyValueStore,
26
+ StakingLifecycle
27
+ {
28
+
29
+ event LogStakingStoreReserveBalanceIncreased(NftId targetNftId, Amount dipAmount, Amount reserveBalance, Blocknumber lastUpdatedIn);
30
+ event LogStakingStoreReserveBalanceDecreased(NftId targetNftId, Amount dipAmount, Amount reserveBalance, Blocknumber lastUpdatedIn);
31
+
32
+ event LogStakingStoreTotalValueLockedIncreased(NftId targetNftId, address token, Amount amount, Amount newBalance, Blocknumber lastUpdatedIn);
33
+ event LogStakingStoreTotalValueLockedDecreased(NftId targetNftId, address token, Amount amount, Amount newBalance, Blocknumber lastUpdatedIn);
34
+
35
+ event LogStakingStoreStakesIncreased(NftId nftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
36
+ event LogStakingStoreStakesDecreased(NftId nftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
37
+
38
+ event LogStakingStoreRewardsIncreased(NftId nftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
39
+ event LogStakingStoreRewardsDecreased(NftId nftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
40
+
41
+ event LogStakingStoreRewardsRestaked(NftId nftId, Amount amount, Amount rewardAmount, Amount rewardIncrementAmount, Amount newBalance, Blocknumber lastUpdatedIn);
42
+
43
+ // in/decreasing reward reserves
44
+ error ErrorStakingStoreNotTarget(NftId targetNftId);
45
+ error ErrorStakingStoreRewardReservesInsufficient(NftId targetNftId, Amount dipAmount, Amount reservesBalanceAmount);
46
+
47
+ // creating and updating of balance
48
+ error ErrorStakingStoreBalanceAlreadyInitialized(NftId nftId);
49
+ error ErrorStakingStoreBalanceNotInitialized(NftId nftId);
50
+
51
+ // update balance
52
+ error ErrorStakingStoreTvlBalanceNotInitialized(NftId nftId);
53
+
54
+ IRegistry private _registry;
55
+ NftIdSet private _targetNftIdSet;
56
+ StakingReader private _reader;
57
+
58
+ // staking rate
59
+ mapping(uint256 chainId => mapping(address token => UFixed stakingRate)) private _stakingRate;
60
+
61
+ // total, stake and reward balances
62
+ mapping(NftId nftId => Amount stakes) private _stakeBalance;
63
+ mapping(NftId nftId => Amount rewards) private _rewardBalance;
64
+ mapping(NftId nftId => Amount reserves) private _reserveBalance;
65
+
66
+ mapping(NftId nftId => Timestamp lastUpdatedAt) private _lastUpdatedAt;
67
+ mapping(NftId nftId => Blocknumber lastUpdatedIn) private _lastUpdatedIn;
68
+
69
+ // total value locked balance
70
+ mapping(NftId nftId => mapping(address token => Amount tvl)) private _tvlBalance;
71
+ mapping(NftId nftId => mapping(address token => Amount tvlInDip)) private _tvlInDip;
72
+ mapping(NftId nftId => Amount tvlRequiredDip) private _tvlRequiredDip;
73
+ mapping(NftId nftId => Blocknumber lastUpdatedIn) private _tvlLastUpdatedIn;
74
+
75
+
76
+ constructor(IRegistry registry, StakingReader reader)
77
+ AccessManaged(msg.sender)
78
+ {
79
+ // set final authority
80
+ setAuthority(registry.getAuthority());
81
+
82
+ // set internal variables
83
+ _registry = registry;
84
+ _reader = reader;
85
+ _targetNftIdSet = new NftIdSet();
86
+
87
+ // register protocol target
88
+ _createTarget(
89
+ NftIdLib.toNftId(1101),
90
+ IStaking.TargetInfo({
91
+ objectType: PROTOCOL(),
92
+ chainId: 1,
93
+ lockingPeriod: TargetManagerLib.getDefaultLockingPeriod(),
94
+ rewardRate: TargetManagerLib.getDefaultRewardRate(),
95
+ maxStakedAmount: AmountLib.max()}));
96
+ }
97
+
98
+
99
+ //--- staking rate specific functions -----------------------------------//
100
+
101
+ function setStakingRate(
102
+ uint256 chainId,
103
+ address token,
104
+ UFixed stakingRate
105
+ )
106
+ external
107
+ restricted()
108
+ {
109
+ _stakingRate[chainId][token] = stakingRate;
110
+ }
111
+
112
+ //--- target specific functions -----------------------------------------//
113
+
114
+ function createTarget(
115
+ NftId targetNftId,
116
+ IStaking.TargetInfo memory targetInfo
117
+ )
118
+ external
119
+ restricted()
120
+ {
121
+ _createTarget(targetNftId, targetInfo);
122
+ }
123
+
124
+
125
+ function updateTarget(
126
+ NftId targetNftId,
127
+ IStaking.TargetInfo memory targetInfo
128
+ )
129
+ external
130
+ restricted()
131
+ {
132
+ _update(
133
+ targetNftId.toKey32(TARGET()),
134
+ abi.encode(targetInfo), KEEP_STATE());
135
+ }
136
+
137
+
138
+ function increaseReserves(
139
+ NftId targetNftId,
140
+ Amount dipAmount
141
+ )
142
+ external
143
+ restricted()
144
+ returns (Amount newReserveBalance)
145
+ {
146
+ newReserveBalance = _reserveBalance[targetNftId] + dipAmount;
147
+ Blocknumber lastUpdatedIn = _updateReserves(targetNftId, newReserveBalance);
148
+
149
+ emit LogStakingStoreReserveBalanceIncreased(targetNftId, dipAmount, newReserveBalance, lastUpdatedIn);
150
+ }
151
+
152
+
153
+ function decreaseReserves(
154
+ NftId targetNftId,
155
+ Amount dipAmount
156
+ )
157
+ external
158
+ restricted()
159
+ returns (Amount newReserveBalance)
160
+ {
161
+ Amount reserveAmount = _reserveBalance[targetNftId];
162
+ if (dipAmount > reserveAmount) {
163
+ revert ErrorStakingStoreRewardReservesInsufficient(
164
+ targetNftId,
165
+ dipAmount,
166
+ reserveAmount);
167
+ }
168
+
169
+ newReserveBalance = _reserveBalance[targetNftId] - dipAmount;
170
+ Blocknumber lastUpdatedIn = _updateReserves(targetNftId, newReserveBalance);
171
+
172
+ emit LogStakingStoreReserveBalanceDecreased(targetNftId, dipAmount, newReserveBalance, lastUpdatedIn);
173
+ }
174
+
175
+
176
+ //--- tvl specific functions -------------------------------------//
177
+
178
+ function increaseTotalValueLocked(
179
+ NftId targetNftId,
180
+ UFixed stakingRate,
181
+ address token,
182
+ Amount amount
183
+ )
184
+ external
185
+ restricted()
186
+ returns (Amount newBalance)
187
+ {
188
+ (
189
+ Blocknumber tvlLastUpdatedIn,
190
+ Amount oldBalance,
191
+ Amount oldDipBalance
192
+ ) = _getAndVerifyTvl(targetNftId, token);
193
+
194
+ newBalance = oldBalance + amount;
195
+ Amount newDipBalance = newBalance.multiplyWith(stakingRate);
196
+
197
+ // update new tvl balances
198
+ _tvlBalance[targetNftId][token] = newBalance;
199
+ _tvlInDip[targetNftId][token] = newDipBalance;
200
+
201
+ // update new amount of required dip
202
+ _tvlRequiredDip[targetNftId] = _tvlRequiredDip[targetNftId] - oldDipBalance + newDipBalance;
203
+
204
+ // update last updated in
205
+ _tvlLastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
206
+
207
+ emit LogStakingStoreTotalValueLockedIncreased(targetNftId, token, amount, newBalance, tvlLastUpdatedIn);
208
+ }
209
+
210
+
211
+ function decreaseTotalValueLocked(
212
+ NftId targetNftId,
213
+ UFixed stakingRate,
214
+ address token,
215
+ Amount amount
216
+ )
217
+ external
218
+ restricted()
219
+ returns (Amount newBalance)
220
+ {
221
+ (
222
+ Blocknumber tvlLastUpdatedIn,
223
+ Amount oldBalance,
224
+ Amount oldDipBalance
225
+ ) = _getAndVerifyTvl(targetNftId, token);
226
+
227
+ newBalance = oldBalance - amount;
228
+ Amount newDipBalance = AmountLib.toAmount((
229
+ stakingRate * newBalance.toUFixed()).toInt());
230
+
231
+ // update new tvl balances
232
+ _tvlBalance[targetNftId][token] = newBalance;
233
+ _tvlInDip[targetNftId][token] = newDipBalance;
234
+
235
+ // update new amount of required dip
236
+ _tvlRequiredDip[targetNftId] = _tvlRequiredDip[targetNftId] - oldDipBalance + newDipBalance;
237
+
238
+ // update last updated in
239
+ _tvlLastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
240
+
241
+ emit LogStakingStoreTotalValueLockedDecreased(targetNftId, token, amount, newBalance, tvlLastUpdatedIn);
242
+ }
243
+
244
+ //--- stake specific functions -------------------------------------//
245
+
246
+ function create(
247
+ NftId stakeNftId,
248
+ IStaking.StakeInfo memory stakeInfo
249
+ )
250
+ external
251
+ restricted()
252
+ {
253
+ _create(
254
+ stakeNftId.toKey32(STAKE()),
255
+ abi.encode(stakeInfo));
256
+
257
+ _createStakeBalance(stakeNftId);
258
+ }
259
+
260
+ function update(
261
+ NftId stakeNftId,
262
+ IStaking.StakeInfo memory stakeInfo
263
+ )
264
+ external
265
+ restricted()
266
+ {
267
+ _update(
268
+ stakeNftId.toKey32(STAKE()),
269
+ abi.encode(stakeInfo),
270
+ KEEP_STATE());
271
+ }
272
+
273
+ //--- general functions --------------------------------------------//
274
+
275
+
276
+ function increaseStake(
277
+ NftId nftId,
278
+ NftId targetNftId,
279
+ Amount amount
280
+ )
281
+ external
282
+ restricted()
283
+ {
284
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
285
+
286
+ _updateStakeBalance(
287
+ nftId,
288
+ _stakeBalance[nftId] + amount, // new stake balance
289
+ _rewardBalance[nftId]); // unchanged reward balance
290
+
291
+ _updateTargetBalance(
292
+ targetNftId,
293
+ _stakeBalance[targetNftId] + amount,
294
+ _rewardBalance[targetNftId]);
295
+
296
+ emit LogStakingStoreStakesIncreased(nftId, amount, _stakeBalance[nftId], lastUpdatedIn);
297
+ }
298
+
299
+
300
+ function restakeRewards(
301
+ NftId nftId,
302
+ NftId targetNftId,
303
+ Amount rewardIncrementAmount
304
+ )
305
+ external
306
+ restricted()
307
+ {
308
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
309
+ Amount stakeAmount = _stakeBalance[nftId];
310
+ Amount rewardAmount = _rewardBalance[nftId];
311
+
312
+ // move all rewards to stake balance
313
+ _updateStakeBalance(
314
+ nftId,
315
+ stakeAmount + rewardAmount + rewardIncrementAmount, // new stake balance
316
+ AmountLib.zero()); // new reward balance
317
+
318
+ _updateTargetBalance(
319
+ targetNftId,
320
+ _stakeBalance[targetNftId] + rewardAmount + rewardIncrementAmount,
321
+ _rewardBalance[targetNftId] - rewardAmount);
322
+
323
+ emit LogStakingStoreRewardsRestaked(nftId, stakeAmount, rewardAmount, rewardIncrementAmount, _stakeBalance[nftId], lastUpdatedIn);
324
+ }
325
+
326
+
327
+ function updateRewards(
328
+ NftId nftId,
329
+ NftId targetNftId,
330
+ Amount rewardIncrementAmount
331
+ )
332
+ external
333
+ restricted()
334
+ {
335
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
336
+
337
+ // increse rewards by increment
338
+ _updateStakeBalance(
339
+ nftId,
340
+ _stakeBalance[nftId], // unchanged stake balance
341
+ _rewardBalance[nftId] + rewardIncrementAmount); // new reward balance
342
+
343
+ _updateTargetBalance(
344
+ targetNftId,
345
+ _stakeBalance[targetNftId],
346
+ _rewardBalance[targetNftId] + rewardIncrementAmount);
347
+
348
+ emit LogStakingStoreRewardsIncreased(nftId, rewardIncrementAmount, _rewardBalance[nftId], lastUpdatedIn);
349
+ }
350
+
351
+
352
+ function claimUpTo(
353
+ NftId nftId,
354
+ NftId targetNftId,
355
+ Amount maxClaimAmount
356
+ )
357
+ external
358
+ restricted()
359
+ returns (Amount claimedAmount)
360
+ {
361
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
362
+
363
+ // determine the claimable rewards amount
364
+ claimedAmount = AmountLib.min(maxClaimAmount, _rewardBalance[nftId]);
365
+
366
+ // decrease rewards by claimed amount
367
+ _updateStakeBalance(
368
+ nftId,
369
+ _stakeBalance[nftId], // unchanged stake balance
370
+ _rewardBalance[nftId] - claimedAmount); // new reward balance
371
+
372
+ _updateTargetBalance(
373
+ targetNftId,
374
+ _stakeBalance[targetNftId],
375
+ _rewardBalance[targetNftId] - claimedAmount);
376
+
377
+ emit LogStakingStoreRewardsDecreased(nftId, claimedAmount, _rewardBalance[nftId], lastUpdatedIn);
378
+ }
379
+
380
+
381
+ function unstakeUpTo(
382
+ NftId nftId,
383
+ NftId targetNftId,
384
+ Amount maxUnstakeAmount,
385
+ Amount maxClaimAmount
386
+ )
387
+ external
388
+ restricted()
389
+ returns (
390
+ Amount unstakedAmount,
391
+ Amount claimedAmount
392
+ )
393
+ {
394
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
395
+
396
+ // determine amounts
397
+ unstakedAmount = AmountLib.min(maxUnstakeAmount, _stakeBalance[nftId]);
398
+ claimedAmount = AmountLib.min(maxClaimAmount, _rewardBalance[nftId]);
399
+
400
+ // decrease stakes and rewards as determined
401
+ _updateStakeBalance(
402
+ nftId,
403
+ _stakeBalance[nftId] - unstakedAmount, // unchanged stake balance
404
+ _rewardBalance[nftId] - claimedAmount); // new reward balance
405
+
406
+ _updateTargetBalance(
407
+ targetNftId,
408
+ _stakeBalance[targetNftId] - unstakedAmount,
409
+ _rewardBalance[targetNftId] - claimedAmount);
410
+
411
+ emit LogStakingStoreStakesDecreased(nftId, unstakedAmount, _stakeBalance[nftId], lastUpdatedIn);
412
+ emit LogStakingStoreRewardsDecreased(nftId, claimedAmount, _rewardBalance[nftId], lastUpdatedIn);
413
+ }
414
+
415
+ //--- view functions -----------------------------------------------//
416
+
417
+ function getStakingReader() external view returns (StakingReader stakingReader){
418
+ return _reader;
419
+ }
420
+
421
+ // TODO rename
422
+ function getTargetNftIdSet() external view returns (NftIdSet targetNftIdSet){
423
+ return _targetNftIdSet;
424
+ }
425
+
426
+ function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) { return _stakingRate[chainId][token]; }
427
+
428
+ function exists(NftId stakeNftId) external view returns (bool) { return exists(stakeNftId.toKey32(STAKE())); }
429
+
430
+ function getTotalValueLocked(NftId nftId, address token) external view returns (Amount tvlBalanceAmount) { return _tvlBalance[nftId][token]; }
431
+ function getRequiredStakeBalance(NftId nftId) external view returns (Amount requiredAmount) { return _tvlRequiredDip[nftId]; }
432
+
433
+ function getReserveBalance(NftId nftId) external view returns (Amount balanceAmount) { return _reserveBalance[nftId]; }
434
+ function getStakeBalance(NftId nftId) external view returns (Amount balanceAmount) { return _stakeBalance[nftId]; }
435
+ function getRewardBalance(NftId nftId) external view returns (Amount rewardAmount) { return _rewardBalance[nftId]; }
436
+ function getBalanceUpdatedAt(NftId nftId) external view returns (Timestamp updatedAt) { return _lastUpdatedAt[nftId]; }
437
+ function getBalanceUpdatedIn(NftId nftId) external view returns (Blocknumber blocknumber) { return _lastUpdatedIn[nftId]; }
438
+
439
+
440
+ function getTargetBalances(NftId nftId)
441
+ external
442
+ view
443
+ returns (
444
+ Amount stakeBalance,
445
+ Amount rewardBalance,
446
+ Amount reserveBalance,
447
+ Blocknumber lastUpdatedIn
448
+ )
449
+ {
450
+ stakeBalance = _stakeBalance[nftId];
451
+ rewardBalance = _rewardBalance[nftId];
452
+ reserveBalance = _reserveBalance[nftId];
453
+ lastUpdatedIn = _lastUpdatedIn[nftId];
454
+ }
455
+
456
+
457
+ function getStakeBalances(NftId nftId)
458
+ external
459
+ view
460
+ returns (
461
+ Amount stakeBalance,
462
+ Amount rewardBalance,
463
+ Timestamp lastUpdatedAt
464
+ )
465
+ {
466
+ stakeBalance = _stakeBalance[nftId];
467
+ rewardBalance = _rewardBalance[nftId];
468
+ lastUpdatedAt = _lastUpdatedAt[nftId];
469
+ }
470
+
471
+ //--- private functions -------------------------------------------//
472
+
473
+ function _createTarget(
474
+ NftId targetNftId,
475
+ IStaking.TargetInfo memory targetInfo
476
+ )
477
+ private
478
+ {
479
+ _create(
480
+ targetNftId.toKey32(TARGET()),
481
+ abi.encode(targetInfo));
482
+
483
+ // initialize tvl and stake balance
484
+ _tvlLastUpdatedIn[targetNftId]= BlocknumberLib.currentBlocknumber();
485
+ _createTargetBalance(targetNftId);
486
+
487
+ _targetNftIdSet.add(targetNftId);
488
+ }
489
+
490
+ function _updateReserves(
491
+ NftId targetNftId,
492
+ Amount newRewardBalance
493
+ )
494
+ private
495
+ returns (Blocknumber lastUpdatedIn)
496
+ {
497
+ if (_lastUpdatedIn[targetNftId].eqz()) {
498
+ revert ErrorStakingStoreNotTarget(targetNftId);
499
+ }
500
+
501
+ lastUpdatedIn = _lastUpdatedIn[targetNftId];
502
+
503
+ _reserveBalance[targetNftId] = newRewardBalance;
504
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
505
+ }
506
+
507
+
508
+ function _createTargetBalance(NftId nftId)
509
+ private
510
+ {
511
+ if (_lastUpdatedIn[nftId].gtz()) {
512
+ revert ErrorStakingStoreBalanceAlreadyInitialized(nftId);
513
+ }
514
+
515
+ // set target balances to 0
516
+ _stakeBalance[nftId] = AmountLib.zero();
517
+ _rewardBalance[nftId] = AmountLib.zero();
518
+ _reserveBalance[nftId] = AmountLib.zero();
519
+
520
+ // set last updated in to current block number
521
+ // we don't need last updated at timestamp for targets
522
+ _lastUpdatedIn[nftId] = BlocknumberLib.currentBlocknumber();
523
+ }
524
+
525
+
526
+ function _createStakeBalance(NftId nftId)
527
+ private
528
+ {
529
+ if (_lastUpdatedIn[nftId].gtz()) {
530
+ revert ErrorStakingStoreBalanceAlreadyInitialized(nftId);
531
+ }
532
+
533
+ // set stake balances to 0
534
+ _stakeBalance[nftId] = AmountLib.zero();
535
+ _rewardBalance[nftId] = AmountLib.zero();
536
+
537
+ // set last updated at/in to current timestamp/block number
538
+ _lastUpdatedAt[nftId] = TimestampLib.blockTimestamp();
539
+ _lastUpdatedIn[nftId] = BlocknumberLib.currentBlocknumber();
540
+ }
541
+
542
+
543
+ function _updateStakeBalance(
544
+ NftId stakeNftId,
545
+ Amount newStakeAmount,
546
+ Amount newRewardAmount
547
+ )
548
+ private
549
+ {
550
+ _stakeBalance[stakeNftId] = newStakeAmount;
551
+ _rewardBalance[stakeNftId] = newRewardAmount;
552
+
553
+ _lastUpdatedAt[stakeNftId] = TimestampLib.blockTimestamp();
554
+ _lastUpdatedIn[stakeNftId] = BlocknumberLib.currentBlocknumber();
555
+ }
556
+
557
+
558
+ function _updateTargetBalance(
559
+ NftId targetNftId,
560
+ Amount newStakeAmount,
561
+ Amount newRewardAmount
562
+ )
563
+ private
564
+ {
565
+ _stakeBalance[targetNftId] = newStakeAmount;
566
+ _rewardBalance[targetNftId] = newRewardAmount;
567
+
568
+ // for targets we don't need the timestamp, just the blocknumber
569
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
570
+ }
571
+
572
+ function _checkBalanceExists(NftId nftId)
573
+ private
574
+ view
575
+ returns (Blocknumber lastUpdatedIn)
576
+ {
577
+ lastUpdatedIn = _lastUpdatedIn[nftId];
578
+
579
+ if (lastUpdatedIn.eqz()) {
580
+ revert ErrorStakingStoreBalanceNotInitialized(nftId);
581
+ }
582
+ }
583
+
584
+
585
+ function _getAndVerifyTvl(
586
+ NftId targetNftId,
587
+ address token
588
+ )
589
+ private
590
+ view
591
+ returns (
592
+ Blocknumber tvlLastUpdatedIn,
593
+ Amount oldBalance,
594
+ Amount oldDipBalance
595
+ )
596
+ {
597
+ tvlLastUpdatedIn = _tvlLastUpdatedIn[targetNftId];
598
+
599
+ if (tvlLastUpdatedIn.eqz()) {
600
+ revert ErrorStakingStoreTvlBalanceNotInitialized(targetNftId);
601
+ }
602
+
603
+ oldBalance = _tvlBalance[targetNftId][token];
604
+ oldDipBalance = _tvlInDip[targetNftId][token];
605
+ }
606
+ }