@etherisc/gif-next 0.0.2-f63e99e-607 → 0.0.2-f689687-279

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 (739) hide show
  1. package/README.md +146 -22
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1379 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1434 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +542 -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/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +571 -523
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +350 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +589 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1016 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1501 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +860 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +915 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1008 -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 +1475 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -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 +1479 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2408 -0
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +559 -559
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +440 -161
  70. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/Instance.sol/Instance.json +409 -3004
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1916 -0
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +661 -0
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1565 -569
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +495 -361
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +355 -103
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3718 -0
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  88. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  100. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  101. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  104. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  105. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  106. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  108. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +569 -0
  110. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  112. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +774 -0
  114. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  116. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +875 -0
  118. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  120. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  122. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  124. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +589 -0
  126. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1261 -0
  128. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +800 -0
  130. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +451 -322
  132. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +907 -0
  134. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1230 -0
  136. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  137. package/artifacts/contracts/pool/Pool.sol/Pool.json +1027 -0
  138. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  140. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1574 -0
  142. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +808 -0
  144. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +813 -0
  146. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +728 -0
  148. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
  150. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +589 -0
  152. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1496 -0
  154. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +848 -0
  156. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  157. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IApplicationService.sol/IApplicationService.json} +287 -251
  158. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1064 -0
  160. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +921 -0
  162. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +602 -0
  164. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1018 -0
  166. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  167. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +172 -185
  168. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +812 -0
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  173. package/artifacts/contracts/product/PricingService.sol/PricingService.json +930 -0
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +784 -0
  176. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  177. package/artifacts/contracts/product/Product.sol/Product.json +1119 -0
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  179. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +628 -171
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +391 -201
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  189. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +958 -202
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1928 -0
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +355 -323
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +340 -130
  200. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  201. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  202. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  203. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  204. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  205. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1333 -0
  206. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  208. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  209. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +352 -101
  210. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  211. package/artifacts/contracts/shared/Component.sol/Component.json +707 -0
  212. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  213. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1571 -0
  214. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  215. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  216. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  217. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +182 -207
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  227. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IComponent.sol/IComponent.json} +353 -167
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  229. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1203 -0
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  231. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +709 -0
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  233. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +143 -15
  242. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  243. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  244. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IService.sol/IService.json +137 -159
  246. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  247. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  248. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  249. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +797 -0
  250. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  251. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  252. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  253. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  254. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  255. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  256. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  257. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  258. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  259. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  260. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +159 -55
  262. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  263. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  264. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Service.sol/Service.json +156 -171
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  270. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  271. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  272. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  273. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1447 -0
  274. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  275. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1096 -0
  276. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  277. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  278. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  279. package/artifacts/contracts/staking/Staking.sol/Staking.json +1849 -0
  280. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  282. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +788 -0
  284. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  286. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1301 -0
  288. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +732 -0
  290. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  292. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  293. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  294. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  295. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  296. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  298. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  300. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  302. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  304. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  306. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  308. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  309. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  310. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  312. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  313. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  314. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  316. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  318. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  320. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  322. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +199 -0
  324. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +433 -0
  326. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  328. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  330. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  332. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  334. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  336. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  338. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  340. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  342. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +113 -0
  344. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  345. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  346. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  347. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  348. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  349. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  350. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  352. package/contracts/accounting/AccountingService.sol +262 -0
  353. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  354. package/contracts/accounting/IAccountingService.sol +45 -0
  355. package/contracts/authorization/AccessAdmin.sol +689 -0
  356. package/contracts/authorization/AccessManagerCloneable.sol +149 -0
  357. package/contracts/authorization/Authorization.sol +337 -0
  358. package/contracts/authorization/IAccess.sol +49 -0
  359. package/contracts/authorization/IAccessAdmin.sol +143 -0
  360. package/contracts/authorization/IAuthorization.sol +74 -0
  361. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  362. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  363. package/contracts/distribution/BasicDistribution.sol +139 -0
  364. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  365. package/contracts/distribution/Distribution.sol +287 -0
  366. package/contracts/distribution/DistributionService.sol +357 -0
  367. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  368. package/contracts/distribution/IDistributionComponent.sol +52 -0
  369. package/contracts/distribution/IDistributionService.sol +100 -0
  370. package/contracts/examples/fire/DamageLevel.sol +59 -0
  371. package/contracts/examples/fire/FirePool.sol +90 -0
  372. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  373. package/contracts/examples/fire/FireProduct.sol +438 -0
  374. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  375. package/contracts/examples/fire/FireUSD.sol +26 -0
  376. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  377. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  378. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  379. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  380. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  381. package/contracts/examples/unpermissioned/SimpleProduct.sol +370 -0
  382. package/contracts/instance/BundleSet.sol +130 -0
  383. package/contracts/instance/IInstance.sol +56 -25
  384. package/contracts/instance/IInstanceService.sol +59 -17
  385. package/contracts/instance/Instance.sol +172 -368
  386. package/contracts/instance/InstanceAdmin.sol +442 -0
  387. package/contracts/instance/InstanceAuthorizationV3.sol +213 -0
  388. package/contracts/instance/InstanceReader.sol +398 -79
  389. package/contracts/instance/InstanceService.sol +348 -126
  390. package/contracts/instance/InstanceServiceManager.sol +14 -31
  391. package/contracts/instance/InstanceStore.sol +298 -0
  392. package/contracts/instance/RiskSet.sol +118 -0
  393. package/contracts/instance/base/BalanceStore.sol +123 -0
  394. package/contracts/instance/base/Cloneable.sol +28 -0
  395. package/contracts/instance/base/ObjectCounter.sol +20 -0
  396. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  397. package/contracts/instance/base/ObjectSet.sol +77 -0
  398. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  399. package/contracts/instance/module/IBundle.sol +8 -8
  400. package/contracts/instance/module/IComponents.sol +51 -0
  401. package/contracts/instance/module/IDistribution.sol +6 -4
  402. package/contracts/instance/module/IPolicy.sol +59 -19
  403. package/contracts/instance/module/IRisk.sol +4 -1
  404. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  405. package/contracts/oracle/BasicOracle.sol +47 -0
  406. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  407. package/contracts/oracle/IOracle.sol +36 -0
  408. package/contracts/oracle/IOracleComponent.sol +33 -0
  409. package/contracts/oracle/IOracleService.sol +66 -0
  410. package/contracts/oracle/Oracle.sol +156 -0
  411. package/contracts/oracle/OracleService.sol +310 -0
  412. package/contracts/oracle/OracleServiceManager.sol +39 -0
  413. package/contracts/pool/BasicPool.sol +175 -0
  414. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  415. package/contracts/pool/BundleService.sol +395 -0
  416. package/contracts/pool/BundleServiceManager.sol +39 -0
  417. package/contracts/pool/IBundleService.sol +115 -0
  418. package/contracts/pool/IPoolComponent.sol +62 -0
  419. package/contracts/pool/IPoolService.sol +165 -0
  420. package/contracts/pool/Pool.sol +345 -0
  421. package/contracts/pool/PoolLib.sol +216 -0
  422. package/contracts/pool/PoolService.sol +757 -0
  423. package/contracts/pool/PoolServiceManager.sol +39 -0
  424. package/contracts/product/ApplicationService.sol +259 -0
  425. package/contracts/product/ApplicationServiceManager.sol +38 -0
  426. package/contracts/product/BasicProduct.sol +51 -0
  427. package/contracts/product/BasicProductAuthorization.sol +56 -0
  428. package/contracts/product/ClaimService.sol +632 -0
  429. package/contracts/product/ClaimServiceManager.sol +38 -0
  430. package/contracts/product/IApplicationService.sol +66 -0
  431. package/contracts/product/IClaimService.sol +135 -0
  432. package/contracts/product/IPolicyService.sol +91 -0
  433. package/contracts/product/IPricingService.sol +39 -0
  434. package/contracts/product/IProductComponent.sol +62 -0
  435. package/contracts/product/IRiskService.sol +33 -0
  436. package/contracts/product/PolicyService.sol +725 -0
  437. package/contracts/product/PolicyServiceManager.sol +39 -0
  438. package/contracts/product/PricingService.sol +304 -0
  439. package/contracts/product/PricingServiceManager.sol +39 -0
  440. package/contracts/product/Product.sol +463 -0
  441. package/contracts/product/RiskService.sol +145 -0
  442. package/contracts/product/RiskServiceManager.sol +39 -0
  443. package/contracts/registry/ChainNft.sol +82 -35
  444. package/contracts/registry/IRegistry.sol +122 -50
  445. package/contracts/registry/IRegistryService.sol +45 -16
  446. package/contracts/registry/IRelease.sol +26 -0
  447. package/contracts/registry/ITransferInterceptor.sol +1 -1
  448. package/contracts/registry/Registry.sol +545 -304
  449. package/contracts/registry/RegistryAdmin.sol +354 -0
  450. package/contracts/registry/RegistryService.sol +126 -284
  451. package/contracts/registry/RegistryServiceManager.sol +26 -53
  452. package/contracts/registry/ReleaseAdmin.sol +245 -0
  453. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  454. package/contracts/registry/ReleaseRegistry.sol +511 -0
  455. package/contracts/registry/ServiceAuthorizationV3.sol +247 -0
  456. package/contracts/registry/TokenRegistry.sol +261 -59
  457. package/contracts/shared/Component.sol +227 -0
  458. package/contracts/shared/ComponentService.sol +692 -0
  459. package/contracts/shared/ComponentServiceManager.sol +38 -0
  460. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  461. package/contracts/shared/ContractLib.sol +253 -0
  462. package/contracts/shared/IComponent.sol +61 -0
  463. package/contracts/shared/IComponentService.sol +112 -0
  464. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  465. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  466. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  467. package/contracts/shared/INftOwnable.sol +15 -12
  468. package/contracts/shared/IPolicyHolder.sol +35 -0
  469. package/contracts/shared/IRegisterable.sol +25 -5
  470. package/contracts/shared/IRegistryLinked.sol +11 -0
  471. package/contracts/shared/IService.sol +13 -5
  472. package/contracts/shared/InitializableERC165.sol +27 -0
  473. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  474. package/contracts/shared/KeyValueStore.sol +131 -0
  475. package/contracts/shared/Lifecycle.sol +88 -0
  476. package/contracts/shared/NftIdSet.sol +65 -0
  477. package/contracts/shared/NftOwnable.sol +75 -84
  478. package/contracts/shared/PolicyHolder.sol +62 -0
  479. package/contracts/shared/Registerable.sol +57 -38
  480. package/contracts/shared/RegistryLinked.sol +38 -0
  481. package/contracts/shared/Service.sol +44 -33
  482. package/contracts/shared/TokenHandler.sol +326 -12
  483. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  484. package/contracts/staking/IStaking.sol +165 -0
  485. package/contracts/staking/IStakingService.sol +165 -0
  486. package/contracts/staking/StakeManagerLib.sol +224 -0
  487. package/contracts/staking/Staking.sol +526 -0
  488. package/contracts/staking/StakingLifecycle.sol +23 -0
  489. package/contracts/staking/StakingManager.sol +52 -0
  490. package/contracts/staking/StakingReader.sol +190 -0
  491. package/contracts/staking/StakingService.sol +430 -0
  492. package/contracts/staking/StakingServiceManager.sol +45 -0
  493. package/contracts/staking/StakingStore.sol +605 -0
  494. package/contracts/staking/TargetManagerLib.sol +211 -0
  495. package/contracts/{types → type}/AddressSet.sol +1 -1
  496. package/contracts/type/Amount.sol +150 -0
  497. package/contracts/{types → type}/Blocknumber.sol +27 -3
  498. package/contracts/type/ClaimId.sol +80 -0
  499. package/contracts/{types → type}/DistributorType.sol +2 -2
  500. package/contracts/{types → type}/Fee.sol +33 -23
  501. package/contracts/{types → type}/Key32.sol +2 -2
  502. package/contracts/type/Key32Set.sol +62 -0
  503. package/contracts/{types → type}/NftId.sol +28 -15
  504. package/contracts/type/NftIdSet.sol +62 -0
  505. package/contracts/type/ObjectType.sol +303 -0
  506. package/contracts/type/PayoutId.sol +82 -0
  507. package/contracts/{types → type}/Referral.sol +6 -1
  508. package/contracts/type/RequestId.sol +75 -0
  509. package/contracts/type/RiskId.sol +74 -0
  510. package/contracts/type/RoleId.sol +182 -0
  511. package/contracts/type/Seconds.sol +101 -0
  512. package/contracts/type/Selector.sol +107 -0
  513. package/contracts/{types → type}/StateId.sol +48 -4
  514. package/contracts/type/String.sol +53 -0
  515. package/contracts/{types → type}/Timestamp.sol +33 -19
  516. package/contracts/{types → type}/UFixed.sol +41 -121
  517. package/contracts/{types → type}/Version.sol +20 -7
  518. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  519. package/contracts/upgradeability/ProxyManager.sol +232 -0
  520. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  521. package/contracts/upgradeability/Versionable.sol +59 -0
  522. package/package.json +11 -7
  523. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  524. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  525. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  526. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  527. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  528. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  529. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  530. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  531. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  532. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  533. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  534. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  535. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  536. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
  537. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  538. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  539. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  540. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  541. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  542. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  543. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  544. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  545. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  546. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  547. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  548. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  549. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  550. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  551. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  553. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  554. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  555. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  557. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  559. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  562. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  564. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  566. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  568. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  570. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  572. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  574. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  575. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  576. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  577. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  578. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  579. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  580. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  581. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  582. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  583. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  584. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  585. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  586. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  587. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  588. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  589. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  590. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  591. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  592. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  593. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  594. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -211
  595. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  596. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  597. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  598. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  599. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  600. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -681
  601. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  602. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -436
  603. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  604. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  605. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  606. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  607. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  608. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -820
  609. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  610. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  611. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  612. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  613. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  614. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  615. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  616. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  617. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  618. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  619. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  620. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  621. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  622. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  623. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  624. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  625. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  626. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  627. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  628. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  629. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  630. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  631. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  632. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  633. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  634. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  635. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  636. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  637. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  638. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  639. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  640. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  641. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  642. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  643. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  644. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  645. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  646. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  647. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  649. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  650. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  651. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  652. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  653. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  654. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  655. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  656. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  657. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  658. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  659. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  660. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  661. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  663. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  665. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  667. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  668. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  669. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  670. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  671. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  672. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  673. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  674. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  675. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  676. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  677. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  678. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  679. package/contracts/components/BaseComponent.sol +0 -91
  680. package/contracts/components/Distribution.sol +0 -160
  681. package/contracts/components/IBaseComponent.sol +0 -25
  682. package/contracts/components/IDistributionComponent.sol +0 -44
  683. package/contracts/components/IPoolComponent.sol +0 -62
  684. package/contracts/components/IProductComponent.sol +0 -35
  685. package/contracts/components/Pool.sol +0 -243
  686. package/contracts/components/Product.sol +0 -297
  687. package/contracts/experiment/cloning/Cloner.sol +0 -47
  688. package/contracts/experiment/errors/Require.sol +0 -38
  689. package/contracts/experiment/errors/Revert.sol +0 -44
  690. package/contracts/experiment/inheritance/A.sol +0 -53
  691. package/contracts/experiment/inheritance/B.sol +0 -28
  692. package/contracts/experiment/inheritance/C.sol +0 -34
  693. package/contracts/experiment/inheritance/IA.sol +0 -13
  694. package/contracts/experiment/inheritance/IB.sol +0 -10
  695. package/contracts/experiment/inheritance/IC.sol +0 -12
  696. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  697. package/contracts/experiment/statemachine/ISM.sol +0 -25
  698. package/contracts/experiment/statemachine/SM.sol +0 -57
  699. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  700. package/contracts/experiment/types/TypeA.sol +0 -47
  701. package/contracts/experiment/types/TypeB.sol +0 -29
  702. package/contracts/instance/AccessManagedSimple.sol +0 -115
  703. package/contracts/instance/AccessManagerSimple.sol +0 -692
  704. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  705. package/contracts/instance/InstanceAccessManager.sol +0 -288
  706. package/contracts/instance/base/ComponentServiceBase.sol +0 -60
  707. package/contracts/instance/base/IInstanceBase.sol +0 -23
  708. package/contracts/instance/base/KeyValueStore.sol +0 -172
  709. package/contracts/instance/base/Lifecycle.sol +0 -100
  710. package/contracts/instance/module/IAccess.sol +0 -38
  711. package/contracts/instance/module/ISetup.sol +0 -44
  712. package/contracts/instance/module/ITreasury.sol +0 -23
  713. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  714. package/contracts/instance/service/DistributionService.sol +0 -102
  715. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  716. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  717. package/contracts/instance/service/IDistributionService.sol +0 -12
  718. package/contracts/instance/service/IPoolService.sol +0 -37
  719. package/contracts/instance/service/IProductService.sol +0 -107
  720. package/contracts/instance/service/PoolService.sol +0 -208
  721. package/contracts/instance/service/PoolServiceManager.sol +0 -53
  722. package/contracts/shared/ContractDeployerLib.sol +0 -72
  723. package/contracts/shared/ERC165.sol +0 -25
  724. package/contracts/shared/ProxyManager.sol +0 -94
  725. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  726. package/contracts/shared/Versionable.sol +0 -147
  727. package/contracts/test/TestFee.sol +0 -25
  728. package/contracts/test/TestRegisterable.sol +0 -18
  729. package/contracts/test/TestRoleId.sol +0 -14
  730. package/contracts/test/TestService.sol +0 -24
  731. package/contracts/test/TestToken.sol +0 -26
  732. package/contracts/test/TestVersion.sol +0 -44
  733. package/contracts/test/TestVersionable.sol +0 -17
  734. package/contracts/types/ChainId.sol +0 -38
  735. package/contracts/types/NftIdSet.sol +0 -60
  736. package/contracts/types/NumberId.sol +0 -52
  737. package/contracts/types/ObjectType.sol +0 -152
  738. package/contracts/types/RiskId.sol +0 -43
  739. package/contracts/types/RoleId.sol +0 -89
@@ -0,0 +1,605 @@
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; //TODO if keeps registry -> RegistryLinked and checks registry address
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
+ }
96
+
97
+
98
+ //--- staking rate specific functions -----------------------------------//
99
+
100
+ function setStakingRate(
101
+ uint256 chainId,
102
+ address token,
103
+ UFixed stakingRate
104
+ )
105
+ external
106
+ restricted()
107
+ {
108
+ _stakingRate[chainId][token] = stakingRate;
109
+ }
110
+
111
+ //--- target specific functions -----------------------------------------//
112
+
113
+ function createTarget(
114
+ NftId targetNftId,
115
+ IStaking.TargetInfo memory targetInfo
116
+ )
117
+ external
118
+ restricted()
119
+ {
120
+ _createTarget(targetNftId, targetInfo);
121
+ }
122
+
123
+
124
+ function updateTarget(
125
+ NftId targetNftId,
126
+ IStaking.TargetInfo memory targetInfo
127
+ )
128
+ external
129
+ restricted()
130
+ {
131
+ _update(
132
+ targetNftId.toKey32(TARGET()),
133
+ abi.encode(targetInfo), KEEP_STATE());
134
+ }
135
+
136
+
137
+ function increaseReserves(
138
+ NftId targetNftId,
139
+ Amount dipAmount
140
+ )
141
+ external
142
+ restricted()
143
+ returns (Amount newReserveBalance)
144
+ {
145
+ newReserveBalance = _reserveBalance[targetNftId] + dipAmount;
146
+ Blocknumber lastUpdatedIn = _updateReserves(targetNftId, newReserveBalance);
147
+
148
+ emit LogStakingStoreReserveBalanceIncreased(targetNftId, dipAmount, newReserveBalance, lastUpdatedIn);
149
+ }
150
+
151
+
152
+ function decreaseReserves(
153
+ NftId targetNftId,
154
+ Amount dipAmount
155
+ )
156
+ external
157
+ restricted()
158
+ returns (Amount newReserveBalance)
159
+ {
160
+ Amount reserveAmount = _reserveBalance[targetNftId];
161
+ if (dipAmount > reserveAmount) {
162
+ revert ErrorStakingStoreRewardReservesInsufficient(
163
+ targetNftId,
164
+ dipAmount,
165
+ reserveAmount);
166
+ }
167
+
168
+ newReserveBalance = _reserveBalance[targetNftId] - dipAmount;
169
+ Blocknumber lastUpdatedIn = _updateReserves(targetNftId, newReserveBalance);
170
+
171
+ emit LogStakingStoreReserveBalanceDecreased(targetNftId, dipAmount, newReserveBalance, lastUpdatedIn);
172
+ }
173
+
174
+
175
+ //--- tvl specific functions -------------------------------------//
176
+
177
+ function increaseTotalValueLocked(
178
+ NftId targetNftId,
179
+ UFixed stakingRate,
180
+ address token,
181
+ Amount amount
182
+ )
183
+ external
184
+ restricted()
185
+ returns (Amount newBalance)
186
+ {
187
+ (
188
+ Blocknumber tvlLastUpdatedIn,
189
+ Amount oldBalance,
190
+ Amount oldDipBalance
191
+ ) = _getAndVerifyTvl(targetNftId, token);
192
+
193
+ newBalance = oldBalance + amount;
194
+ Amount newDipBalance = newBalance.multiplyWith(stakingRate);
195
+
196
+ // update new tvl balances
197
+ _tvlBalance[targetNftId][token] = newBalance;
198
+ _tvlInDip[targetNftId][token] = newDipBalance;
199
+
200
+ // update new amount of required dip
201
+ _tvlRequiredDip[targetNftId] = _tvlRequiredDip[targetNftId] - oldDipBalance + newDipBalance;
202
+
203
+ // update last updated in
204
+ _tvlLastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
205
+
206
+ emit LogStakingStoreTotalValueLockedIncreased(targetNftId, token, amount, newBalance, tvlLastUpdatedIn);
207
+ }
208
+
209
+
210
+ function decreaseTotalValueLocked(
211
+ NftId targetNftId,
212
+ UFixed stakingRate,
213
+ address token,
214
+ Amount amount
215
+ )
216
+ external
217
+ restricted()
218
+ returns (Amount newBalance)
219
+ {
220
+ (
221
+ Blocknumber tvlLastUpdatedIn,
222
+ Amount oldBalance,
223
+ Amount oldDipBalance
224
+ ) = _getAndVerifyTvl(targetNftId, token);
225
+
226
+ newBalance = oldBalance - amount;
227
+ Amount newDipBalance = AmountLib.toAmount((
228
+ stakingRate * newBalance.toUFixed()).toInt());
229
+
230
+ // update new tvl balances
231
+ _tvlBalance[targetNftId][token] = newBalance;
232
+ _tvlInDip[targetNftId][token] = newDipBalance;
233
+
234
+ // update new amount of required dip
235
+ _tvlRequiredDip[targetNftId] = _tvlRequiredDip[targetNftId] - oldDipBalance + newDipBalance;
236
+
237
+ // update last updated in
238
+ _tvlLastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
239
+
240
+ emit LogStakingStoreTotalValueLockedDecreased(targetNftId, token, amount, newBalance, tvlLastUpdatedIn);
241
+ }
242
+
243
+ //--- stake specific functions -------------------------------------//
244
+
245
+ function create(
246
+ NftId stakeNftId,
247
+ IStaking.StakeInfo memory stakeInfo
248
+ )
249
+ external
250
+ restricted()
251
+ {
252
+ _create(
253
+ stakeNftId.toKey32(STAKE()),
254
+ abi.encode(stakeInfo));
255
+
256
+ _createStakeBalance(stakeNftId);
257
+ }
258
+
259
+ function update(
260
+ NftId stakeNftId,
261
+ IStaking.StakeInfo memory stakeInfo
262
+ )
263
+ external
264
+ restricted()
265
+ {
266
+ _update(
267
+ stakeNftId.toKey32(STAKE()),
268
+ abi.encode(stakeInfo),
269
+ KEEP_STATE());
270
+ }
271
+
272
+ //--- general functions --------------------------------------------//
273
+
274
+
275
+ function increaseStake(
276
+ NftId nftId,
277
+ NftId targetNftId,
278
+ Amount amount
279
+ )
280
+ external
281
+ restricted()
282
+ {
283
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
284
+
285
+ _updateStakeBalance(
286
+ nftId,
287
+ _stakeBalance[nftId] + amount, // new stake balance
288
+ _rewardBalance[nftId]); // unchanged reward balance
289
+
290
+ _updateTargetBalance(
291
+ targetNftId,
292
+ _stakeBalance[targetNftId] + amount,
293
+ _rewardBalance[targetNftId]);
294
+
295
+ emit LogStakingStoreStakesIncreased(nftId, amount, _stakeBalance[nftId], lastUpdatedIn);
296
+ }
297
+
298
+
299
+ function restakeRewards(
300
+ NftId nftId,
301
+ NftId targetNftId,
302
+ Amount rewardIncrementAmount
303
+ )
304
+ external
305
+ restricted()
306
+ {
307
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
308
+ Amount stakeAmount = _stakeBalance[nftId];
309
+ Amount rewardAmount = _rewardBalance[nftId];
310
+
311
+ // move all rewards to stake balance
312
+ _updateStakeBalance(
313
+ nftId,
314
+ stakeAmount + rewardAmount + rewardIncrementAmount, // new stake balance
315
+ AmountLib.zero()); // new reward balance
316
+
317
+ _updateTargetBalance(
318
+ targetNftId,
319
+ _stakeBalance[targetNftId] + rewardAmount + rewardIncrementAmount,
320
+ _rewardBalance[targetNftId] - rewardAmount);
321
+
322
+ emit LogStakingStoreRewardsRestaked(nftId, stakeAmount, rewardAmount, rewardIncrementAmount, _stakeBalance[nftId], lastUpdatedIn);
323
+ }
324
+
325
+
326
+ function updateRewards(
327
+ NftId nftId,
328
+ NftId targetNftId,
329
+ Amount rewardIncrementAmount
330
+ )
331
+ external
332
+ restricted()
333
+ {
334
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
335
+
336
+ // increse rewards by increment
337
+ _updateStakeBalance(
338
+ nftId,
339
+ _stakeBalance[nftId], // unchanged stake balance
340
+ _rewardBalance[nftId] + rewardIncrementAmount); // new reward balance
341
+
342
+ _updateTargetBalance(
343
+ targetNftId,
344
+ _stakeBalance[targetNftId],
345
+ _rewardBalance[targetNftId] + rewardIncrementAmount);
346
+
347
+ emit LogStakingStoreRewardsIncreased(nftId, rewardIncrementAmount, _rewardBalance[nftId], lastUpdatedIn);
348
+ }
349
+
350
+
351
+ function claimUpTo(
352
+ NftId nftId,
353
+ NftId targetNftId,
354
+ Amount maxClaimAmount
355
+ )
356
+ external
357
+ restricted()
358
+ returns (Amount claimedAmount)
359
+ {
360
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
361
+
362
+ // determine the claimable rewards amount
363
+ claimedAmount = AmountLib.min(maxClaimAmount, _rewardBalance[nftId]);
364
+
365
+ // decrease rewards by claimed amount
366
+ _updateStakeBalance(
367
+ nftId,
368
+ _stakeBalance[nftId], // unchanged stake balance
369
+ _rewardBalance[nftId] - claimedAmount); // new reward balance
370
+
371
+ _updateTargetBalance(
372
+ targetNftId,
373
+ _stakeBalance[targetNftId],
374
+ _rewardBalance[targetNftId] - claimedAmount);
375
+
376
+ emit LogStakingStoreRewardsDecreased(nftId, claimedAmount, _rewardBalance[nftId], lastUpdatedIn);
377
+ }
378
+
379
+
380
+ function unstakeUpTo(
381
+ NftId nftId,
382
+ NftId targetNftId,
383
+ Amount maxUnstakeAmount,
384
+ Amount maxClaimAmount
385
+ )
386
+ external
387
+ restricted()
388
+ returns (
389
+ Amount unstakedAmount,
390
+ Amount claimedAmount
391
+ )
392
+ {
393
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
394
+
395
+ // determine amounts
396
+ unstakedAmount = AmountLib.min(maxUnstakeAmount, _stakeBalance[nftId]);
397
+ claimedAmount = AmountLib.min(maxClaimAmount, _rewardBalance[nftId]);
398
+
399
+ // decrease stakes and rewards as determined
400
+ _updateStakeBalance(
401
+ nftId,
402
+ _stakeBalance[nftId] - unstakedAmount, // unchanged stake balance
403
+ _rewardBalance[nftId] - claimedAmount); // new reward balance
404
+
405
+ _updateTargetBalance(
406
+ targetNftId,
407
+ _stakeBalance[targetNftId] - unstakedAmount,
408
+ _rewardBalance[targetNftId] - claimedAmount);
409
+
410
+ emit LogStakingStoreStakesDecreased(nftId, unstakedAmount, _stakeBalance[nftId], lastUpdatedIn);
411
+ emit LogStakingStoreRewardsDecreased(nftId, claimedAmount, _rewardBalance[nftId], lastUpdatedIn);
412
+ }
413
+
414
+ //--- view functions -----------------------------------------------//
415
+
416
+ function getStakingReader() external view returns (StakingReader stakingReader){
417
+ return _reader;
418
+ }
419
+
420
+ // TODO rename
421
+ function getTargetNftIdSet() external view returns (NftIdSet targetNftIdSet){
422
+ return _targetNftIdSet;
423
+ }
424
+
425
+ function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) { return _stakingRate[chainId][token]; }
426
+
427
+ function exists(NftId stakeNftId) external view returns (bool) { return exists(stakeNftId.toKey32(STAKE())); }
428
+
429
+ function getTotalValueLocked(NftId nftId, address token) external view returns (Amount tvlBalanceAmount) { return _tvlBalance[nftId][token]; }
430
+ function getRequiredStakeBalance(NftId nftId) external view returns (Amount requiredAmount) { return _tvlRequiredDip[nftId]; }
431
+
432
+ function getReserveBalance(NftId nftId) external view returns (Amount balanceAmount) { return _reserveBalance[nftId]; }
433
+ function getStakeBalance(NftId nftId) external view returns (Amount balanceAmount) { return _stakeBalance[nftId]; }
434
+ function getRewardBalance(NftId nftId) external view returns (Amount rewardAmount) { return _rewardBalance[nftId]; }
435
+ function getBalanceUpdatedAt(NftId nftId) external view returns (Timestamp updatedAt) { return _lastUpdatedAt[nftId]; }
436
+ function getBalanceUpdatedIn(NftId nftId) external view returns (Blocknumber blocknumber) { return _lastUpdatedIn[nftId]; }
437
+
438
+
439
+ function getTargetBalances(NftId nftId)
440
+ external
441
+ view
442
+ returns (
443
+ Amount stakeBalance,
444
+ Amount rewardBalance,
445
+ Amount reserveBalance,
446
+ Blocknumber lastUpdatedIn
447
+ )
448
+ {
449
+ stakeBalance = _stakeBalance[nftId];
450
+ rewardBalance = _rewardBalance[nftId];
451
+ reserveBalance = _reserveBalance[nftId];
452
+ lastUpdatedIn = _lastUpdatedIn[nftId];
453
+ }
454
+
455
+
456
+ function getStakeBalances(NftId nftId)
457
+ external
458
+ view
459
+ returns (
460
+ Amount stakeBalance,
461
+ Amount rewardBalance,
462
+ Timestamp lastUpdatedAt
463
+ )
464
+ {
465
+ stakeBalance = _stakeBalance[nftId];
466
+ rewardBalance = _rewardBalance[nftId];
467
+ lastUpdatedAt = _lastUpdatedAt[nftId];
468
+ }
469
+
470
+ //--- private functions -------------------------------------------//
471
+
472
+ function _createTarget(
473
+ NftId targetNftId,
474
+ IStaking.TargetInfo memory targetInfo
475
+ )
476
+ private
477
+ {
478
+ _create(
479
+ targetNftId.toKey32(TARGET()),
480
+ abi.encode(targetInfo));
481
+
482
+ // initialize tvl and stake balance
483
+ _tvlLastUpdatedIn[targetNftId]= BlocknumberLib.currentBlocknumber();
484
+ _createTargetBalance(targetNftId);
485
+
486
+ _targetNftIdSet.add(targetNftId);
487
+ }
488
+
489
+ function _updateReserves(
490
+ NftId targetNftId,
491
+ Amount newRewardBalance
492
+ )
493
+ private
494
+ returns (Blocknumber lastUpdatedIn)
495
+ {
496
+ if (_lastUpdatedIn[targetNftId].eqz()) {
497
+ revert ErrorStakingStoreNotTarget(targetNftId);
498
+ }
499
+
500
+ lastUpdatedIn = _lastUpdatedIn[targetNftId];
501
+
502
+ _reserveBalance[targetNftId] = newRewardBalance;
503
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
504
+ }
505
+
506
+
507
+ function _createTargetBalance(NftId nftId)
508
+ private
509
+ {
510
+ if (_lastUpdatedIn[nftId].gtz()) {
511
+ revert ErrorStakingStoreBalanceAlreadyInitialized(nftId);
512
+ }
513
+
514
+ // set target balances to 0
515
+ _stakeBalance[nftId] = AmountLib.zero();
516
+ _rewardBalance[nftId] = AmountLib.zero();
517
+ _reserveBalance[nftId] = AmountLib.zero();
518
+
519
+ // set last updated in to current block number
520
+ // we don't need last updated at timestamp for targets
521
+ _lastUpdatedIn[nftId] = BlocknumberLib.currentBlocknumber();
522
+ }
523
+
524
+
525
+ function _createStakeBalance(NftId nftId)
526
+ private
527
+ {
528
+ if (_lastUpdatedIn[nftId].gtz()) {
529
+ revert ErrorStakingStoreBalanceAlreadyInitialized(nftId);
530
+ }
531
+
532
+ // set stake balances to 0
533
+ _stakeBalance[nftId] = AmountLib.zero();
534
+ _rewardBalance[nftId] = AmountLib.zero();
535
+
536
+ // set last updated at/in to current timestamp/block number
537
+ _lastUpdatedAt[nftId] = TimestampLib.blockTimestamp();
538
+ _lastUpdatedIn[nftId] = BlocknumberLib.currentBlocknumber();
539
+ }
540
+
541
+
542
+ function _updateStakeBalance(
543
+ NftId stakeNftId,
544
+ Amount newStakeAmount,
545
+ Amount newRewardAmount
546
+ )
547
+ private
548
+ {
549
+ _stakeBalance[stakeNftId] = newStakeAmount;
550
+ _rewardBalance[stakeNftId] = newRewardAmount;
551
+
552
+ _lastUpdatedAt[stakeNftId] = TimestampLib.blockTimestamp();
553
+ _lastUpdatedIn[stakeNftId] = BlocknumberLib.currentBlocknumber();
554
+ }
555
+
556
+
557
+ function _updateTargetBalance(
558
+ NftId targetNftId,
559
+ Amount newStakeAmount,
560
+ Amount newRewardAmount
561
+ )
562
+ private
563
+ {
564
+ _stakeBalance[targetNftId] = newStakeAmount;
565
+ _rewardBalance[targetNftId] = newRewardAmount;
566
+
567
+ // for targets we don't need the timestamp, just the blocknumber
568
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
569
+ }
570
+
571
+ function _checkBalanceExists(NftId nftId)
572
+ private
573
+ view
574
+ returns (Blocknumber lastUpdatedIn)
575
+ {
576
+ lastUpdatedIn = _lastUpdatedIn[nftId];
577
+
578
+ if (lastUpdatedIn.eqz()) {
579
+ revert ErrorStakingStoreBalanceNotInitialized(nftId);
580
+ }
581
+ }
582
+
583
+
584
+ function _getAndVerifyTvl(
585
+ NftId targetNftId,
586
+ address token
587
+ )
588
+ private
589
+ view
590
+ returns (
591
+ Blocknumber tvlLastUpdatedIn,
592
+ Amount oldBalance,
593
+ Amount oldDipBalance
594
+ )
595
+ {
596
+ tvlLastUpdatedIn = _tvlLastUpdatedIn[targetNftId];
597
+
598
+ if (tvlLastUpdatedIn.eqz()) {
599
+ revert ErrorStakingStoreTvlBalanceNotInitialized(targetNftId);
600
+ }
601
+
602
+ oldBalance = _tvlBalance[targetNftId][token];
603
+ oldDipBalance = _tvlInDip[targetNftId][token];
604
+ }
605
+ }