@etherisc/gif-next 0.0.2-db1e1e4-828 → 0.0.2-dc37b66-227

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 (632) hide show
  1. package/README.md +32 -3
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1548 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +233 -328
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1557 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +854 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +213 -239
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +157 -302
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +296 -2011
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +198 -74
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +422 -2807
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +820 -379
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +263 -282
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -119
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3581 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  74. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  82. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +190 -218
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1093 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  92. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +297 -153
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1483 -0
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  100. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +302 -45
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  102. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +228 -290
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  104. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +480 -57
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +1312 -0
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1690 -0
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +766 -0
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  124. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +131 -94
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +194 -80
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  130. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +86 -159
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +11 -61
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  144. package/artifacts/contracts/{components → product}/Product.sol/Product.json +396 -287
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +182 -28
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +199 -125
  155. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/Registry.sol/Registry.json +443 -43
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +367 -73
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  165. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  173. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +139 -85
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1696 -0
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +27 -95
  180. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  181. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +110 -84
  182. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  184. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
  186. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  188. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  190. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  192. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  194. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  196. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  198. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IService.sol/IService.json +17 -6
  200. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  201. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  202. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1015 -0
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  207. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  211. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  215. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  216. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -22
  218. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  219. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  220. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Service.sol/Service.json +17 -6
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  223. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  226. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  230. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  246. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  247. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  250. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  254. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  256. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  258. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  276. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  282. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  284. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  286. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +33 -7
  288. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  290. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  292. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  294. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  296. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  297. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  298. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  300. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  302. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  303. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  304. package/contracts/authorization/AccessAdmin.sol +591 -0
  305. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  306. package/contracts/authorization/Authorization.sol +218 -0
  307. package/contracts/authorization/IAccess.sol +48 -0
  308. package/contracts/authorization/IAccessAdmin.sol +136 -0
  309. package/contracts/authorization/IAuthorization.sol +54 -0
  310. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  311. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  312. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  313. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  314. package/contracts/distribution/BasicDistribution.sol +138 -0
  315. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  316. package/contracts/{components → distribution}/Distribution.sol +177 -162
  317. package/contracts/distribution/DistributionService.sol +337 -0
  318. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  319. package/contracts/distribution/IDistributionComponent.sol +52 -0
  320. package/contracts/{instance/service → distribution}/IDistributionService.sol +36 -38
  321. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +30 -31
  322. package/contracts/instance/IInstance.sol +55 -67
  323. package/contracts/instance/IInstanceService.sol +50 -30
  324. package/contracts/instance/Instance.sol +160 -234
  325. package/contracts/instance/InstanceAdmin.sol +266 -0
  326. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  327. package/contracts/instance/InstanceReader.sol +173 -59
  328. package/contracts/instance/InstanceService.sol +280 -332
  329. package/contracts/instance/InstanceServiceManager.sol +12 -26
  330. package/contracts/instance/InstanceStore.sol +277 -0
  331. package/contracts/instance/base/BalanceStore.sol +123 -0
  332. package/contracts/instance/base/Cloneable.sol +28 -0
  333. package/contracts/instance/base/ObjectCounter.sol +21 -0
  334. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  335. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  336. package/contracts/instance/module/IAccess.sol +4 -12
  337. package/contracts/instance/module/IBundle.sol +6 -9
  338. package/contracts/instance/module/IComponents.sol +20 -10
  339. package/contracts/instance/module/IDistribution.sol +6 -6
  340. package/contracts/instance/module/IPolicy.sol +28 -16
  341. package/contracts/instance/module/IRisk.sol +1 -1
  342. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  343. package/contracts/oracle/BasicOracle.sol +48 -0
  344. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  345. package/contracts/oracle/IOracle.sol +36 -0
  346. package/contracts/oracle/IOracleComponent.sol +33 -0
  347. package/contracts/oracle/IOracleService.sol +65 -0
  348. package/contracts/oracle/Oracle.sol +166 -0
  349. package/contracts/oracle/OracleService.sol +278 -0
  350. package/contracts/oracle/OracleServiceManager.sol +39 -0
  351. package/contracts/pool/BasicPool.sol +164 -0
  352. package/contracts/pool/BasicPoolAuthorization.sol +55 -0
  353. package/contracts/pool/BundleService.sol +424 -0
  354. package/contracts/pool/BundleServiceManager.sol +39 -0
  355. package/contracts/{instance/service → pool}/IBundleService.sol +55 -20
  356. package/contracts/pool/IPoolComponent.sol +58 -0
  357. package/contracts/pool/IPoolService.sol +158 -0
  358. package/contracts/pool/Pool.sol +332 -0
  359. package/contracts/pool/PoolService.sol +549 -0
  360. package/contracts/pool/PoolServiceManager.sol +39 -0
  361. package/contracts/product/ApplicationService.sol +230 -0
  362. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  363. package/contracts/product/BasicProduct.sol +82 -0
  364. package/contracts/product/BasicProductAuthorization.sol +43 -0
  365. package/contracts/product/ClaimService.sol +417 -0
  366. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  367. package/contracts/{instance/service → product}/IApplicationService.sol +15 -35
  368. package/contracts/product/IClaimService.sol +99 -0
  369. package/contracts/{instance/service → product}/IPolicyService.sol +37 -31
  370. package/contracts/product/IPricingService.sol +39 -0
  371. package/contracts/product/IProductComponent.sol +40 -0
  372. package/contracts/product/IProductService.sol +33 -0
  373. package/contracts/product/PolicyService.sol +476 -0
  374. package/contracts/product/PolicyServiceManager.sol +39 -0
  375. package/contracts/product/PricingService.sol +300 -0
  376. package/contracts/product/PricingServiceManager.sol +39 -0
  377. package/contracts/{components → product}/Product.sol +209 -110
  378. package/contracts/product/ProductService.sol +99 -0
  379. package/contracts/product/ProductServiceManager.sol +39 -0
  380. package/contracts/registry/ChainNft.sol +8 -1
  381. package/contracts/registry/IRegistry.sol +59 -26
  382. package/contracts/registry/IRegistryService.sol +42 -41
  383. package/contracts/registry/Registry.sol +234 -125
  384. package/contracts/registry/RegistryAdmin.sol +365 -0
  385. package/contracts/registry/RegistryService.sol +69 -99
  386. package/contracts/registry/RegistryServiceManager.sol +23 -32
  387. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  388. package/contracts/registry/ReleaseRegistry.sol +485 -0
  389. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  390. package/contracts/registry/TokenRegistry.sol +261 -62
  391. package/contracts/shared/Component.sol +280 -0
  392. package/contracts/shared/ComponentService.sol +651 -0
  393. package/contracts/shared/ComponentServiceManager.sol +35 -0
  394. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  395. package/contracts/{components → shared}/IComponent.sol +23 -29
  396. package/contracts/shared/IComponentService.sol +108 -0
  397. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  398. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  399. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  400. package/contracts/shared/INftOwnable.sol +2 -2
  401. package/contracts/shared/IPolicyHolder.sol +29 -10
  402. package/contracts/shared/IRegistryLinked.sol +0 -1
  403. package/contracts/shared/IService.sol +12 -3
  404. package/contracts/shared/InitializableCustom.sol +177 -0
  405. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
  406. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  407. package/contracts/shared/KeyValueStore.sol +131 -0
  408. package/contracts/shared/Lifecycle.sol +77 -0
  409. package/contracts/shared/NftIdSet.sol +65 -0
  410. package/contracts/shared/NftOwnable.sol +5 -18
  411. package/contracts/shared/PolicyHolder.sol +41 -23
  412. package/contracts/shared/Registerable.sol +13 -12
  413. package/contracts/shared/RegistryLinked.sol +0 -5
  414. package/contracts/shared/Service.sol +32 -22
  415. package/contracts/shared/TokenHandler.sol +27 -2
  416. package/contracts/staking/IStaking.sol +167 -0
  417. package/contracts/staking/IStakingService.sol +160 -0
  418. package/contracts/staking/StakeManagerLib.sol +231 -0
  419. package/contracts/staking/Staking.sol +516 -0
  420. package/contracts/staking/StakingLifecycle.sol +23 -0
  421. package/contracts/staking/StakingManager.sol +50 -0
  422. package/contracts/staking/StakingReader.sol +183 -0
  423. package/contracts/staking/StakingService.sol +411 -0
  424. package/contracts/staking/StakingServiceManager.sol +44 -0
  425. package/contracts/staking/StakingStore.sol +605 -0
  426. package/contracts/staking/TargetManagerLib.sol +207 -0
  427. package/contracts/{types → type}/AddressSet.sol +1 -1
  428. package/contracts/type/Amount.sol +135 -0
  429. package/contracts/{types → type}/Blocknumber.sol +20 -3
  430. package/contracts/{types → type}/ClaimId.sol +25 -2
  431. package/contracts/{types → type}/Fee.sol +24 -22
  432. package/contracts/{types → type}/NftId.sol +14 -16
  433. package/contracts/{types → type}/NftIdSet.sol +2 -2
  434. package/contracts/type/ObjectType.sol +271 -0
  435. package/contracts/{types → type}/PayoutId.sol +33 -5
  436. package/contracts/{types → type}/Referral.sol +2 -1
  437. package/contracts/type/RequestId.sol +75 -0
  438. package/contracts/{types → type}/RiskId.sol +1 -1
  439. package/contracts/type/RoleId.sol +174 -0
  440. package/contracts/{types → type}/Seconds.sol +40 -1
  441. package/contracts/type/Selector.sol +102 -0
  442. package/contracts/{types → type}/StateId.sol +33 -4
  443. package/contracts/type/String.sol +53 -0
  444. package/contracts/{types → type}/Timestamp.sol +10 -1
  445. package/contracts/{types → type}/UFixed.sol +34 -9
  446. package/contracts/{types → type}/Version.sol +4 -2
  447. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  448. package/contracts/{shared → upgradeability}/ProxyManager.sol +36 -7
  449. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  450. package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
  451. package/package.json +8 -5
  452. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  453. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  454. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  455. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  456. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  457. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  458. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  459. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  460. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  461. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  462. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  463. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  464. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  465. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  466. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  467. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  468. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  469. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  470. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  471. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  472. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  473. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  474. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  475. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  476. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  477. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  478. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  479. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  481. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  483. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  485. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  487. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  488. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  489. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  490. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  491. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  492. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  493. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  494. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  495. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  497. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  499. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  503. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  504. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  506. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  508. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  510. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  511. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  512. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  514. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  515. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  516. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  517. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  518. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  519. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  520. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  521. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  522. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  523. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  524. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  525. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  526. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  527. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  528. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  529. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  530. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  531. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  532. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  533. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  534. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  535. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  536. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  537. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  538. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  539. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  540. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  541. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  542. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  543. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  544. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  545. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  546. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  547. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  548. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  550. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  551. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  552. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  554. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  556. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  557. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  558. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  559. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  560. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  561. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  562. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  563. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  564. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  565. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  566. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  568. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  569. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  570. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  571. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  572. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  573. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  574. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  575. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  576. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  577. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  578. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  579. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  582. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  584. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  586. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  588. package/contracts/components/Component.sol +0 -253
  589. package/contracts/components/IDistributionComponent.sol +0 -71
  590. package/contracts/components/IPoolComponent.sol +0 -113
  591. package/contracts/components/IProductComponent.sol +0 -40
  592. package/contracts/components/Pool.sol +0 -303
  593. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  594. package/contracts/instance/Cloneable.sol +0 -51
  595. package/contracts/instance/InstanceAccessManager.sol +0 -527
  596. package/contracts/instance/base/ComponentService.sol +0 -121
  597. package/contracts/instance/base/KeyValueStore.sol +0 -180
  598. package/contracts/instance/base/Lifecycle.sol +0 -109
  599. package/contracts/instance/module/ISetup.sol +0 -33
  600. package/contracts/instance/module/ITreasury.sol +0 -23
  601. package/contracts/instance/service/ApplicationService.sol +0 -350
  602. package/contracts/instance/service/BundleService.sol +0 -431
  603. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  604. package/contracts/instance/service/ClaimService.sol +0 -151
  605. package/contracts/instance/service/DistributionService.sol +0 -435
  606. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  607. package/contracts/instance/service/IClaimService.sol +0 -61
  608. package/contracts/instance/service/IPoolService.sol +0 -99
  609. package/contracts/instance/service/IProductService.sol +0 -40
  610. package/contracts/instance/service/PolicyService.sol +0 -362
  611. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  612. package/contracts/instance/service/PoolService.sol +0 -303
  613. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  614. package/contracts/instance/service/ProductService.sol +0 -210
  615. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  616. package/contracts/registry/RegistryAccessManager.sol +0 -216
  617. package/contracts/registry/ReleaseManager.sol +0 -324
  618. package/contracts/shared/ContractDeployerLib.sol +0 -72
  619. package/contracts/test/TestFee.sol +0 -25
  620. package/contracts/test/TestRegisterable.sol +0 -18
  621. package/contracts/test/TestRoleId.sol +0 -14
  622. package/contracts/test/TestService.sol +0 -25
  623. package/contracts/test/TestToken.sol +0 -26
  624. package/contracts/test/TestVersion.sol +0 -44
  625. package/contracts/test/TestVersionable.sol +0 -17
  626. package/contracts/types/Amount.sol +0 -60
  627. package/contracts/types/ChainId.sol +0 -38
  628. package/contracts/types/NumberId.sol +0 -52
  629. package/contracts/types/ObjectType.sol +0 -157
  630. package/contracts/types/RoleId.sol +0 -97
  631. /package/contracts/{types → type}/DistributorType.sol +0 -0
  632. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,183 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
6
+ import {IStaking} from "../staking/IStaking.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {Blocknumber} from "../type/Blocknumber.sol";
10
+ import {InitializableCustom} from "../shared/InitializableCustom.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {STAKE, TARGET} from "../type/ObjectType.sol";
13
+ import {StakingStore} from "./StakingStore.sol";
14
+ import {Timestamp} from "../type/Timestamp.sol";
15
+ import {UFixed} from "../type/UFixed.sol";
16
+
17
+ contract StakingReader is
18
+ IRegistryLinked,
19
+ InitializableCustom
20
+ {
21
+
22
+ error ErrorStakingReaderDependenciesAlreadySet();
23
+
24
+ IRegistry private _registry;
25
+ IStaking private _staking;
26
+ StakingStore private _store;
27
+
28
+ constructor(IRegistry registry) InitializableCustom() {
29
+ _registry = registry;
30
+ }
31
+
32
+ function initialize(
33
+ address stakingAddress,
34
+ address stakingStoreAddress
35
+ )
36
+ external
37
+ initializer
38
+ {
39
+ _staking = IStaking(stakingAddress);
40
+ _store = StakingStore(stakingStoreAddress);
41
+ }
42
+
43
+ // view and pure functions
44
+
45
+ function getRegistry() external view returns (IRegistry registry) {
46
+ return _registry;
47
+ }
48
+
49
+ function getStaking() external view returns (IStaking staking) {
50
+ return _staking;
51
+ }
52
+
53
+ function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) {
54
+ return _store.getStakingRate(chainId, token);
55
+ }
56
+
57
+
58
+ function isTarget(NftId targetNftId) external view returns (bool) {
59
+ return _store.getTargetNftIdSet().exists(targetNftId);
60
+ }
61
+
62
+
63
+ function targets() external view returns (uint256) {
64
+ return _store.getTargetNftIdSet().nftIds();
65
+ }
66
+
67
+
68
+ function getTargetNftId(uint256 idx) external view returns (NftId) {
69
+ return _store.getTargetNftIdSet().getNftId(idx);
70
+ }
71
+
72
+
73
+ function isActive(NftId targetNftId) external view returns (bool) {
74
+ return _store.getTargetNftIdSet().isActive(targetNftId);
75
+ }
76
+
77
+
78
+ function activeTargets() external view returns (uint256) {
79
+ return _store.getTargetNftIdSet().activeNftIds();
80
+ }
81
+
82
+
83
+ function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
84
+ return _store.getTargetNftIdSet().getActiveNftId(idx);
85
+ }
86
+
87
+
88
+ function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
89
+ return _registry.getObjectInfo(stakeNftId).parentNftId;
90
+ }
91
+
92
+
93
+ function getTargetInfo(NftId targetNftId) public view returns (IStaking.TargetInfo memory info) {
94
+ bytes memory data = _store.getData(targetNftId.toKey32(TARGET()));
95
+ if (data.length > 0) {
96
+ return abi.decode(data, (IStaking.TargetInfo));
97
+ }
98
+ }
99
+
100
+
101
+ function getStakeInfo(NftId stakeNftId) external view returns (IStaking.StakeInfo memory stakeInfo) {
102
+ bytes memory data = _store.getData(stakeNftId.toKey32(STAKE()));
103
+ if (data.length > 0) {
104
+ return abi.decode(data, (IStaking.StakeInfo));
105
+ }
106
+ }
107
+
108
+
109
+ /// @dev get the reward rate that applies to the specified stake nft id.
110
+ function getTargetRewardRate(NftId stakeNftId) external view returns (NftId targetNftId, UFixed rewardRate) {
111
+ targetNftId = getTargetNftId(stakeNftId);
112
+ rewardRate = getTargetInfo(targetNftId).rewardRate;
113
+ }
114
+
115
+
116
+ /// @dev get the reward rate for the specified target nft id.
117
+ function getRewardRate(NftId targetNftId) external view returns (UFixed rewardRate) {
118
+ return getTargetInfo(targetNftId).rewardRate;
119
+ }
120
+
121
+ /// @dev returns the current reward reserve balance for the specified target.
122
+ function getReserveBalance(NftId targetNftId) external view returns (Amount rewardReserveBalance) {
123
+ return _store.getReserveBalance(targetNftId);
124
+ }
125
+
126
+ function getStakeBalance(NftId nftId) external view returns (Amount balanceAmount) {
127
+ return _store.getStakeBalance(nftId);
128
+ }
129
+
130
+ function getRewardBalance(NftId nftId) external view returns (Amount rewardAmount) {
131
+ return _store.getRewardBalance(nftId);
132
+ }
133
+
134
+ function getBalanceUpdatedAt(NftId nftId) external view returns (Timestamp updatedAt) {
135
+ return _store.getBalanceUpdatedAt(nftId);
136
+ }
137
+
138
+ function getBalanceUpdatedIn(NftId nftId) external view returns (Blocknumber blocknumber) {
139
+ return _store.getBalanceUpdatedIn(nftId);
140
+ }
141
+
142
+ function getTotalValueLocked(NftId nftId, address token) external view returns (Amount totalValueLocked) {
143
+ return _store.getTotalValueLocked(nftId, token);
144
+ }
145
+
146
+ function getRequiredStakeBalance(NftId nftId) external view returns (Amount requiredStakedAmount) {
147
+ return _store.getRequiredStakeBalance(nftId);
148
+ }
149
+
150
+ function getTargetBalances(NftId stakeNftId)
151
+ public
152
+ view
153
+ returns (
154
+ Amount balanceAmount,
155
+ Amount stakeAmount,
156
+ Amount rewardAmount,
157
+ Blocknumber lastUpdatedIn
158
+ )
159
+ {
160
+ (
161
+ balanceAmount,
162
+ stakeAmount,
163
+ rewardAmount,
164
+ lastUpdatedIn
165
+ ) = _store.getTargetBalances(stakeNftId);
166
+ }
167
+
168
+ function getStakeBalances(NftId stakeNftId)
169
+ external
170
+ view
171
+ returns (
172
+ Amount stakeAmount,
173
+ Amount rewardAmount,
174
+ Timestamp lastUpdatedAt
175
+ )
176
+ {
177
+ (
178
+ stakeAmount,
179
+ rewardAmount,
180
+ lastUpdatedAt
181
+ ) = _store.getStakeBalances(stakeNftId);
182
+ }
183
+ }
@@ -0,0 +1,411 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {ChainNft} from "../registry/ChainNft.sol";
8
+ import {IPoolService} from "../pool/IPoolService.sol";
9
+ import {IRegisterable} from "../shared/IRegisterable.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {RegistryService} from "../registry/RegistryService.sol";
12
+ import {IStaking} from "./IStaking.sol";
13
+ import {IStakingService} from "./IStakingService.sol";
14
+ import {NftId, NftIdLib} from "../type/NftId.sol";
15
+ import {ObjectType, INSTANCE, PROTOCOL, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
16
+ import {Seconds} from "../type/Seconds.sol";
17
+ import {Service} from "../shared/Service.sol";
18
+ import {StakeManagerLib} from "./StakeManagerLib.sol";
19
+ import {StakingReader} from "./StakingReader.sol";
20
+ import {TargetManagerLib} from "./TargetManagerLib.sol";
21
+ import {Timestamp} from "../type/Timestamp.sol";
22
+ import {TokenHandler} from "../shared/TokenHandler.sol";
23
+ import {UFixed} from "../type/UFixed.sol";
24
+
25
+
26
+ contract StakingService is
27
+ Service,
28
+ IStakingService
29
+ {
30
+ // TODO decide and implement string spec for location calculation
31
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.StakingService.sol")) - 1)) & ~bytes32(uint256(0xff));
32
+ bytes32 public constant STAKING_SERVICE_LOCATION_V1 = 0x6548005c3f4340f82f348c576c0ff69f7f529cadd5ad41f96aae61abceeaa300;
33
+
34
+ struct StakingServiceStorage {
35
+ RegistryService _registryService;
36
+ IStaking _staking;
37
+ IERC20Metadata _dip;
38
+ TokenHandler _tokenHandler;
39
+ }
40
+
41
+ modifier onlyNftOwner(NftId nftId) {
42
+ if(msg.sender != getRegistry().ownerOf(nftId)) {
43
+ revert ErrorStakingServiceNotNftOwner(nftId, getRegistry().ownerOf(nftId), msg.sender);
44
+ }
45
+ _;
46
+ }
47
+
48
+
49
+ function createInstanceTarget(
50
+ NftId targetNftId,
51
+ Seconds initialLockingPeriod,
52
+ UFixed initialRewardRate
53
+ )
54
+ external
55
+ virtual
56
+ restricted()
57
+ {
58
+ uint256 chainId = block.chainid;
59
+ _getStakingServiceStorage()._staking.registerTarget(
60
+ targetNftId,
61
+ INSTANCE(),
62
+ chainId,
63
+ initialLockingPeriod,
64
+ initialRewardRate);
65
+
66
+ emit LogStakingServiceInstanceTargetRegistered(targetNftId, chainId);
67
+ }
68
+
69
+
70
+ function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod)
71
+ external
72
+ virtual
73
+ restricted()
74
+ {
75
+ _getStakingServiceStorage()._staking.setLockingPeriod(
76
+ instanceNftId,
77
+ lockingPeriod);
78
+ }
79
+
80
+
81
+ function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate)
82
+ external
83
+ virtual
84
+ restricted()
85
+ {
86
+ _getStakingServiceStorage()._staking.setRewardRate(
87
+ instanceNftId,
88
+ rewardRate);
89
+ }
90
+
91
+
92
+ function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount)
93
+ external
94
+ virtual
95
+ restricted()
96
+ returns (Amount newBalance)
97
+ {
98
+ return _refillRewardReserves(instanceNftId, rewardProvider, dipAmount);
99
+ }
100
+
101
+
102
+ function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount)
103
+ external
104
+ virtual
105
+ restricted()
106
+ returns (Amount newBalance)
107
+ {
108
+ address rewardProvider = msg.sender;
109
+ return _refillRewardReserves(targetNftId, rewardProvider, dipAmount);
110
+ }
111
+
112
+
113
+ function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount)
114
+ external
115
+ virtual
116
+ restricted()
117
+ returns (Amount newBalance)
118
+ {
119
+ // update reward reserve book keeping
120
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
121
+ newBalance = $._staking.withdrawRewardReserves(instanceNftId, dipAmount);
122
+
123
+ // transfer withdrawal amount to target owner
124
+ address instanceOwner = getRegistry().ownerOf(instanceNftId);
125
+ $._staking.transferDipAmount(
126
+ instanceOwner,
127
+ dipAmount);
128
+
129
+ emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
130
+ }
131
+
132
+
133
+ /// @dev creates a new stake to the specified target nft id with the provided dip amount
134
+ /// the target nft id must have been registered as an active staking target prior to this call
135
+ /// the sender of this transaction becomes the stake owner via the minted nft.
136
+ /// to create the new stake balance and allowance of the staker need to cover the dip amount
137
+ /// the allowance needs to be on the token handler of the staking contract (getTokenHandler())
138
+ /// this is a permissionless function.
139
+ function create(
140
+ NftId targetNftId,
141
+ Amount dipAmount
142
+ )
143
+ external
144
+ virtual
145
+ restricted()
146
+ returns (
147
+ NftId stakeNftId
148
+ )
149
+ {
150
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
151
+ address stakeOwner = msg.sender;
152
+
153
+ // target nft id checks are performed in $._staking.createStake() below
154
+ // register new stake object with registry
155
+ stakeNftId = $._registryService.registerStake(
156
+ IRegistry.ObjectInfo({
157
+ nftId: NftIdLib.zero(),
158
+ parentNftId: targetNftId,
159
+ objectType: STAKE(),
160
+ isInterceptor: false,
161
+ objectAddress: address(0),
162
+ initialOwner: stakeOwner,
163
+ data: ""
164
+ }));
165
+
166
+ // create stake info with staking
167
+ $._staking.createStake(
168
+ stakeNftId,
169
+ targetNftId,
170
+ dipAmount);
171
+
172
+ // collect staked dip by staking
173
+ $._staking.collectDipAmount(
174
+ stakeOwner,
175
+ dipAmount);
176
+
177
+ emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
178
+ }
179
+
180
+
181
+ function stake(
182
+ NftId stakeNftId,
183
+ Amount dipAmount
184
+ )
185
+ external
186
+ virtual
187
+ restricted()
188
+ onlyNftOwner(stakeNftId)
189
+ {
190
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
191
+ address stakeOwner = msg.sender;
192
+
193
+ // add additional staked dips by staking
194
+ Amount stakeBalance = $._staking.stake(
195
+ stakeNftId,
196
+ dipAmount);
197
+
198
+ // collect staked dip by staking
199
+ if (dipAmount.gtz()) {
200
+ $._staking.collectDipAmount(
201
+ stakeOwner,
202
+ dipAmount);
203
+ }
204
+
205
+ emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
206
+ }
207
+
208
+
209
+ function restakeToNewTarget(
210
+ NftId stakeNftId,
211
+ NftId newTargetNftId
212
+ )
213
+ external
214
+ virtual
215
+ restricted()
216
+ onlyNftOwner(stakeNftId)
217
+ returns (
218
+ NftId newStakeNftId
219
+ )
220
+ {
221
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
222
+ // TODO implement
223
+ }
224
+
225
+
226
+ function updateRewards(
227
+ NftId stakeNftId
228
+ )
229
+ external
230
+ virtual
231
+ restricted()
232
+ {
233
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
234
+ $._staking.updateRewards(stakeNftId);
235
+
236
+ emit LogStakingServiceRewardsUpdated(stakeNftId);
237
+ }
238
+
239
+
240
+ function claimRewards(NftId stakeNftId)
241
+ external
242
+ virtual
243
+ restricted()
244
+ onlyNftOwner(stakeNftId)
245
+ {
246
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
247
+ address stakeOwner = msg.sender;
248
+
249
+ Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
250
+ $._staking.transferDipAmount(
251
+ stakeOwner,
252
+ rewardsClaimedAmount);
253
+
254
+ emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
255
+ }
256
+
257
+
258
+ function unstake(NftId stakeNftId)
259
+ external
260
+ virtual
261
+ restricted()
262
+ onlyNftOwner(stakeNftId)
263
+ {
264
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
265
+ address stakeOwner = msg.sender;
266
+
267
+ (
268
+ Amount unstakedAmount,
269
+ Amount rewardsClaimedAmount
270
+ ) = $._staking.unstake(stakeNftId);
271
+
272
+ Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
273
+ $._staking.transferDipAmount(
274
+ stakeOwner,
275
+ totalAmount);
276
+
277
+ emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
278
+ }
279
+
280
+
281
+ function setTotalValueLocked(
282
+ NftId targetNftId,
283
+ address token,
284
+ Amount amount
285
+ )
286
+ external
287
+ virtual
288
+ restricted()
289
+ {
290
+ // TODO implement
291
+
292
+ }
293
+
294
+ //--- view functions ----------------------------------------------------//
295
+
296
+ function getDipToken()
297
+ external
298
+ virtual
299
+ returns (IERC20Metadata dip)
300
+ {
301
+ return _getStakingServiceStorage()._dip;
302
+ }
303
+
304
+
305
+ function getTokenHandler()
306
+ external
307
+ virtual
308
+ returns (TokenHandler tokenHandler)
309
+ {
310
+ return _getStakingServiceStorage()._tokenHandler;
311
+ }
312
+
313
+
314
+ function getStaking()
315
+ external
316
+ virtual
317
+ returns (IStaking staking)
318
+ {
319
+ return _getStakingServiceStorage()._staking;
320
+ }
321
+
322
+ //--- internal functions ------------------------------------------------//
323
+
324
+ function _initialize(
325
+ address owner,
326
+ bytes memory data
327
+ )
328
+ internal
329
+ virtual override
330
+ initializer()
331
+ {
332
+ (
333
+ address authority,
334
+ address registryAddress,
335
+ address stakingAddress
336
+ ) = abi.decode(data, (address, address, address));
337
+
338
+ initializeService(registryAddress, authority, owner);
339
+
340
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
341
+ $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
342
+ $._staking = _registerStaking(stakingAddress);
343
+ $._dip = $._staking.getToken();
344
+ $._tokenHandler = $._staking.getTokenHandler();
345
+
346
+ registerInterface(type(IStakingService).interfaceId);
347
+ }
348
+
349
+
350
+ function _registerStaking(
351
+ address stakingAddress
352
+ )
353
+ internal
354
+ returns (IStaking staking)
355
+ {
356
+ // check if provided staking contract is already registred
357
+ // staking contract may have been already registered by a previous major relase
358
+ IRegistry.ObjectInfo memory stakingInfo = getRegistry().getObjectInfo(stakingAddress);
359
+ if (stakingInfo.nftId.gtz()) {
360
+ // registered object but wrong type
361
+ if (stakingInfo.objectType != STAKING()) {
362
+ revert ErrorStakingServiceNotStaking(stakingAddress);
363
+ }
364
+
365
+ // return correctly registered staking contract
366
+ return IStaking(stakingAddress);
367
+ }
368
+
369
+ // check that contract implements IStaking
370
+ if(!IStaking(stakingAddress).supportsInterface(type(IStaking).interfaceId)) {
371
+ revert ErrorStakingServiceNotSupportingIStaking(stakingAddress);
372
+ }
373
+
374
+ address owner = msg.sender;
375
+ _getStakingServiceStorage()._registryService.registerStaking(
376
+ IRegisterable(stakingAddress),
377
+ owner);
378
+
379
+ return IStaking(stakingAddress);
380
+ }
381
+
382
+
383
+ function _refillRewardReserves(NftId targetNftId, address rewardProvider, Amount dipAmount)
384
+ internal
385
+ virtual
386
+ returns (Amount newBalance)
387
+ {
388
+ // update reward reserve book keeping
389
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
390
+ newBalance = $._staking.refillRewardReserves(targetNftId, dipAmount);
391
+
392
+ // collect reward dip from provider
393
+ $._staking.collectDipAmount(
394
+ rewardProvider,
395
+ dipAmount);
396
+
397
+ emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
398
+ }
399
+
400
+
401
+ function _getStakingServiceStorage() private pure returns (StakingServiceStorage storage $) {
402
+ assembly {
403
+ $.slot := STAKING_SERVICE_LOCATION_V1
404
+ }
405
+ }
406
+
407
+
408
+ function _getDomain() internal pure override returns(ObjectType) {
409
+ return STAKING();
410
+ }
411
+ }
@@ -0,0 +1,44 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
6
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
+ import {StakingService} from "./StakingService.sol";
8
+
9
+ contract StakingServiceManager is
10
+ ProxyManager
11
+ {
12
+
13
+ StakingService private _stakingService;
14
+
15
+ /// @dev initializes proxy manager with service implementation
16
+ constructor(
17
+ address authority,
18
+ address registryAddress,
19
+ bytes32 salt
20
+ )
21
+ ProxyManager(registryAddress)
22
+ {
23
+ StakingService svc = new StakingService();
24
+ bytes memory data = abi.encode(
25
+ authority,
26
+ registryAddress,
27
+ IRegistry(registryAddress).getStakingAddress());
28
+ IVersionable versionable = deployDetermenistic(
29
+ address(svc),
30
+ data,
31
+ salt);
32
+
33
+ _stakingService = StakingService(address(versionable));
34
+ }
35
+
36
+ //--- view functions ----------------------------------------------------//
37
+ function getStakingService()
38
+ external
39
+ view
40
+ returns (StakingService)
41
+ {
42
+ return _stakingService;
43
+ }
44
+ }