@etherisc/gif-next 0.0.2-a63347a-883 → 0.0.2-a6ce659-551

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