@etherisc/gif-next 0.0.2-b72409c-493 → 0.0.2-b7eedf9-238

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 (651) hide show
  1. package/README.md +57 -88
  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 +1342 -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 +202 -509
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1400 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +787 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +264 -227
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +254 -335
  36. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  44. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +272 -1967
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +269 -79
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +358 -2812
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +908 -337
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +319 -304
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +105 -123
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3587 -0
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  67. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +10 -118
  76. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  81. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  82. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  83. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  85. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  87. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  89. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  90. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +251 -216
  91. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  92. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → oracle/IOracleService.sol/IOracleService.json} +301 -256
  93. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  94. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +871 -0
  95. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  96. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +922 -0
  97. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +679 -0
  99. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  100. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +262 -370
  101. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  102. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  103. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  104. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1362 -0
  105. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +771 -0
  107. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  108. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +907 -0
  109. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  110. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +286 -331
  111. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  112. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1198 -0
  113. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  114. package/artifacts/contracts/pool/Pool.sol/Pool.json +1034 -0
  115. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  116. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1469 -0
  117. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  118. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +695 -0
  119. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  120. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +732 -0
  121. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +667 -0
  123. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  124. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +336 -397
  125. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  127. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  128. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1325 -0
  129. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  130. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +775 -0
  131. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  132. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +129 -168
  133. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  134. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +886 -0
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  136. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +354 -109
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  138. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → product/IPricingService.sol/IPricingService.json} +214 -217
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  140. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +948 -0
  141. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  142. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +81 -65
  143. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  144. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1104 -0
  145. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  146. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +715 -0
  147. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  148. package/artifacts/contracts/product/PricingService.sol/PricingService.json +860 -0
  149. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  150. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +715 -0
  151. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  152. package/artifacts/contracts/product/Product.sol/Product.json +1054 -0
  153. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  154. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  155. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  156. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  157. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  158. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  159. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  160. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +183 -29
  161. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  162. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +199 -149
  163. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  164. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/Registry.sol/Registry.json +444 -44
  166. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  167. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  168. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  169. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +367 -204
  170. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +100 -100
  172. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  173. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  174. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  175. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  176. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  177. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  178. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  180. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  181. package/artifacts/contracts/shared/Component.sol/Component.json +685 -0
  182. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1568 -0
  184. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +753 -0
  186. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +141 -142
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  189. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +177 -77
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  195. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  197. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  200. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +48 -12
  202. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  204. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  206. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IService.sol/IService.json +96 -19
  208. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  210. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  212. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  213. package/artifacts/contracts/{components/Component.sol/Component.json → shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json} +179 -218
  214. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  215. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  216. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  217. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  218. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  219. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  220. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  221. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +12 -70
  222. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  223. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +22 -82
  224. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  225. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +18 -106
  226. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  227. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  228. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  229. package/artifacts/contracts/shared/Service.sol/Service.json +83 -113
  230. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  231. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  232. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  233. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  234. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  235. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  236. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  237. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  238. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  240. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  241. package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -0
  242. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  244. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +714 -0
  246. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  248. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1231 -0
  250. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -0
  252. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  254. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  255. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  256. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  257. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  258. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  260. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  262. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  264. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  266. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  268. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  270. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  272. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  273. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  274. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  276. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  278. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  280. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  282. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  284. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  286. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  288. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  290. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  292. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  294. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  298. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  300. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  302. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  304. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  306. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  307. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  308. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  309. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
  310. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  311. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  312. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  313. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  314. package/contracts/authorization/AccessAdmin.sol +591 -0
  315. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  316. package/contracts/authorization/Authorization.sol +217 -0
  317. package/contracts/authorization/IAccess.sol +48 -0
  318. package/contracts/authorization/IAccessAdmin.sol +136 -0
  319. package/contracts/authorization/IAuthorization.sol +54 -0
  320. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  321. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  322. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  323. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  324. package/contracts/distribution/BasicDistribution.sol +138 -0
  325. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  326. package/contracts/{components → distribution}/Distribution.sol +178 -163
  327. package/contracts/distribution/DistributionService.sol +336 -0
  328. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  329. package/contracts/distribution/IDistributionComponent.sol +52 -0
  330. package/contracts/{instance/service → distribution}/IDistributionService.sol +41 -38
  331. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  332. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  333. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  334. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  335. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +30 -31
  336. package/contracts/instance/IInstance.sol +38 -73
  337. package/contracts/instance/IInstanceService.sol +50 -30
  338. package/contracts/instance/Instance.sol +147 -245
  339. package/contracts/instance/InstanceAdmin.sol +285 -0
  340. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  341. package/contracts/instance/InstanceReader.sol +202 -62
  342. package/contracts/instance/InstanceService.sol +307 -335
  343. package/contracts/instance/InstanceServiceManager.sol +12 -26
  344. package/contracts/instance/InstanceStore.sol +287 -0
  345. package/contracts/instance/base/BalanceStore.sol +123 -0
  346. package/contracts/instance/base/Cloneable.sol +28 -0
  347. package/contracts/instance/base/ObjectCounter.sol +21 -0
  348. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  349. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  350. package/contracts/instance/module/IAccess.sol +5 -13
  351. package/contracts/instance/module/IBundle.sol +8 -9
  352. package/contracts/instance/module/IComponents.sol +20 -9
  353. package/contracts/instance/module/IDistribution.sol +6 -6
  354. package/contracts/instance/module/IPolicy.sol +47 -35
  355. package/contracts/instance/module/IRisk.sol +1 -1
  356. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  357. package/contracts/oracle/BasicOracle.sol +48 -0
  358. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  359. package/contracts/oracle/IOracle.sol +36 -0
  360. package/contracts/oracle/IOracleComponent.sol +33 -0
  361. package/contracts/oracle/IOracleService.sol +65 -0
  362. package/contracts/oracle/Oracle.sol +167 -0
  363. package/contracts/oracle/OracleService.sol +279 -0
  364. package/contracts/oracle/OracleServiceManager.sol +39 -0
  365. package/contracts/pool/BasicPool.sol +166 -0
  366. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  367. package/contracts/pool/BundleService.sol +438 -0
  368. package/contracts/pool/BundleServiceManager.sol +39 -0
  369. package/contracts/pool/IBundleService.sol +134 -0
  370. package/contracts/pool/IPoolComponent.sol +58 -0
  371. package/contracts/pool/IPoolService.sol +160 -0
  372. package/contracts/pool/Pool.sol +326 -0
  373. package/contracts/pool/PoolService.sol +509 -0
  374. package/contracts/pool/PoolServiceManager.sol +39 -0
  375. package/contracts/product/ApplicationService.sol +248 -0
  376. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  377. package/contracts/product/BasicProduct.sol +53 -0
  378. package/contracts/product/BasicProductAuthorization.sol +43 -0
  379. package/contracts/product/ClaimService.sol +487 -0
  380. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  381. package/contracts/{instance/service → product}/IApplicationService.sol +16 -35
  382. package/contracts/product/IClaimService.sol +122 -0
  383. package/contracts/product/IPolicyService.sol +73 -0
  384. package/contracts/product/IPricingService.sol +39 -0
  385. package/contracts/product/IProductComponent.sol +39 -0
  386. package/contracts/product/IRiskService.sol +33 -0
  387. package/contracts/product/PolicyService.sol +573 -0
  388. package/contracts/product/PolicyServiceManager.sol +39 -0
  389. package/contracts/product/PricingService.sol +301 -0
  390. package/contracts/product/PricingServiceManager.sol +39 -0
  391. package/contracts/product/Product.sol +425 -0
  392. package/contracts/product/RiskService.sol +97 -0
  393. package/contracts/product/RiskServiceManager.sol +39 -0
  394. package/contracts/registry/ChainNft.sol +8 -1
  395. package/contracts/registry/IRegistry.sol +60 -27
  396. package/contracts/registry/IRegistryService.sol +44 -42
  397. package/contracts/registry/Registry.sol +235 -126
  398. package/contracts/registry/RegistryAdmin.sol +374 -0
  399. package/contracts/registry/RegistryService.sol +70 -101
  400. package/contracts/registry/RegistryServiceManager.sol +23 -32
  401. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  402. package/contracts/registry/ReleaseRegistry.sol +485 -0
  403. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  404. package/contracts/registry/TokenRegistry.sol +261 -62
  405. package/contracts/shared/Component.sol +268 -0
  406. package/contracts/shared/ComponentService.sol +641 -0
  407. package/contracts/shared/ComponentServiceManager.sol +35 -0
  408. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  409. package/contracts/shared/IComponent.sol +70 -0
  410. package/contracts/shared/IComponentService.sol +108 -0
  411. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  412. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  413. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  414. package/contracts/shared/INftOwnable.sol +2 -2
  415. package/contracts/shared/IPolicyHolder.sol +22 -12
  416. package/contracts/shared/IRegistryLinked.sol +0 -1
  417. package/contracts/shared/IService.sol +15 -8
  418. package/contracts/shared/InitializableCustom.sol +177 -0
  419. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  420. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  421. package/contracts/shared/KeyValueStore.sol +131 -0
  422. package/contracts/shared/Lifecycle.sol +77 -0
  423. package/contracts/shared/NftIdSet.sol +65 -0
  424. package/contracts/shared/NftOwnable.sol +10 -23
  425. package/contracts/shared/PolicyHolder.sol +18 -43
  426. package/contracts/shared/Registerable.sol +17 -16
  427. package/contracts/shared/RegistryLinked.sol +3 -7
  428. package/contracts/shared/Service.sol +51 -27
  429. package/contracts/shared/TokenHandler.sol +115 -9
  430. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  431. package/contracts/staking/IStaking.sol +168 -0
  432. package/contracts/staking/IStakingService.sol +160 -0
  433. package/contracts/staking/StakeManagerLib.sol +224 -0
  434. package/contracts/staking/Staking.sol +498 -0
  435. package/contracts/staking/StakingLifecycle.sol +23 -0
  436. package/contracts/staking/StakingManager.sol +50 -0
  437. package/contracts/staking/StakingReader.sol +183 -0
  438. package/contracts/staking/StakingService.sol +407 -0
  439. package/contracts/staking/StakingServiceManager.sol +44 -0
  440. package/contracts/staking/StakingStore.sol +605 -0
  441. package/contracts/staking/TargetManagerLib.sol +211 -0
  442. package/contracts/{types → type}/AddressSet.sol +1 -1
  443. package/contracts/type/Amount.sol +135 -0
  444. package/contracts/{types → type}/Blocknumber.sol +26 -3
  445. package/contracts/{types → type}/ClaimId.sol +25 -2
  446. package/contracts/{types → type}/Fee.sol +33 -24
  447. package/contracts/{types → type}/NftId.sol +14 -16
  448. package/contracts/{types → type}/NftIdSet.sol +2 -2
  449. package/contracts/type/ObjectType.sol +275 -0
  450. package/contracts/{types → type}/PayoutId.sol +33 -5
  451. package/contracts/{types → type}/Referral.sol +2 -1
  452. package/contracts/type/RequestId.sol +75 -0
  453. package/contracts/{types → type}/RiskId.sol +1 -1
  454. package/contracts/type/RoleId.sol +174 -0
  455. package/contracts/type/Seconds.sol +101 -0
  456. package/contracts/type/Selector.sol +102 -0
  457. package/contracts/{types → type}/StateId.sol +34 -4
  458. package/contracts/type/String.sol +53 -0
  459. package/contracts/{types → type}/Timestamp.sol +21 -2
  460. package/contracts/{types → type}/UFixed.sol +34 -9
  461. package/contracts/{types → type}/Version.sol +4 -2
  462. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  463. package/contracts/{shared → upgradeability}/ProxyManager.sol +37 -8
  464. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  465. package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
  466. package/package.json +8 -5
  467. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  468. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  469. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  470. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  471. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  472. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  473. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  474. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  475. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  476. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  477. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  478. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  479. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  480. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  481. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1311
  482. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  483. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  484. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  485. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  486. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  487. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  488. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  489. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  490. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  491. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  492. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  493. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  494. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  495. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
  496. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  497. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  498. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  499. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
  500. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  502. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  503. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  504. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  506. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1732
  508. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  510. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  511. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  512. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -409
  514. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  515. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  516. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  517. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  518. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  519. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
  520. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  522. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  523. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -824
  524. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  525. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -657
  526. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  528. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  530. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  531. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  532. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  533. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  534. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  535. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  536. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  537. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  538. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  539. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  540. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  541. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  542. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  543. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  544. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  545. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  546. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  547. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  548. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  549. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  550. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  551. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  552. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  553. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  554. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  555. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  556. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  557. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  558. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  559. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  560. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  561. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  562. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  563. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  564. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  565. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  566. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  568. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  569. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  570. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  571. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  572. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  573. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  574. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  575. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  576. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  577. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  578. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  579. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  580. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  582. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  584. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  586. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  588. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  590. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  591. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  592. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  594. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  595. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  596. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  597. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  598. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  599. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  601. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  603. package/contracts/components/Component.sol +0 -251
  604. package/contracts/components/IComponent.sol +0 -74
  605. package/contracts/components/IDistributionComponent.sol +0 -71
  606. package/contracts/components/IPoolComponent.sol +0 -113
  607. package/contracts/components/IProductComponent.sol +0 -40
  608. package/contracts/components/Pool.sol +0 -299
  609. package/contracts/components/Product.sol +0 -293
  610. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  611. package/contracts/instance/Cloneable.sol +0 -51
  612. package/contracts/instance/InstanceAccessManager.sol +0 -522
  613. package/contracts/instance/base/ComponentService.sol +0 -134
  614. package/contracts/instance/base/KeyValueStore.sol +0 -175
  615. package/contracts/instance/base/Lifecycle.sol +0 -109
  616. package/contracts/instance/module/ISetup.sol +0 -33
  617. package/contracts/instance/module/ITreasury.sol +0 -23
  618. package/contracts/instance/service/ApplicationService.sol +0 -350
  619. package/contracts/instance/service/BundleService.sol +0 -336
  620. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  621. package/contracts/instance/service/ClaimService.sol +0 -151
  622. package/contracts/instance/service/DistributionService.sol +0 -467
  623. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  624. package/contracts/instance/service/IBundleService.sol +0 -62
  625. package/contracts/instance/service/IClaimService.sol +0 -61
  626. package/contracts/instance/service/IPolicyService.sol +0 -72
  627. package/contracts/instance/service/IPoolService.sol +0 -35
  628. package/contracts/instance/service/IProductService.sol +0 -40
  629. package/contracts/instance/service/PolicyService.sol +0 -403
  630. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  631. package/contracts/instance/service/PoolService.sol +0 -220
  632. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  633. package/contracts/instance/service/ProductService.sol +0 -241
  634. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  635. package/contracts/registry/RegistryAccessManager.sol +0 -216
  636. package/contracts/registry/ReleaseManager.sol +0 -322
  637. package/contracts/shared/ContractDeployerLib.sol +0 -72
  638. package/contracts/test/TestFee.sol +0 -25
  639. package/contracts/test/TestRegisterable.sol +0 -18
  640. package/contracts/test/TestRoleId.sol +0 -14
  641. package/contracts/test/TestService.sol +0 -25
  642. package/contracts/test/TestToken.sol +0 -26
  643. package/contracts/test/TestVersion.sol +0 -44
  644. package/contracts/test/TestVersionable.sol +0 -17
  645. package/contracts/types/ChainId.sol +0 -38
  646. package/contracts/types/NumberId.sol +0 -52
  647. package/contracts/types/ObjectType.sol +0 -157
  648. package/contracts/types/RoleId.sol +0 -97
  649. package/contracts/types/Seconds.sol +0 -54
  650. /package/contracts/{types → type}/DistributorType.sol +0 -0
  651. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,498 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {IRegistryService} from "../registry/IRegistryService.sol";
6
+ import {IStaking} from "./IStaking.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
+
9
+ import {Amount, AmountLib} from "../type/Amount.sol";
10
+ import {Component} from "../shared/Component.sol";
11
+ import {IComponent} from "../shared/IComponent.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {ObjectType, STAKING} from "../type/ObjectType.sol";
14
+ import {Seconds} from "../type/Seconds.sol";
15
+ import {StakeManagerLib} from "./StakeManagerLib.sol";
16
+ import {StakingReader} from "./StakingReader.sol";
17
+ import {StakingStore} from "./StakingStore.sol";
18
+ import {TargetManagerLib} from "./TargetManagerLib.sol";
19
+ import {Timestamp} from "../type/Timestamp.sol";
20
+ import {TokenHandler} from "../shared/TokenHandler.sol";
21
+ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
22
+ import {TokenRegistry} from "../registry/TokenRegistry.sol";
23
+ import {UFixed} from "../type/UFixed.sol";
24
+ import {Version, VersionLib} from "../type/Version.sol";
25
+ import {Versionable} from "../upgradeability/Versionable.sol";
26
+
27
+ contract Staking is
28
+ Component,
29
+ Versionable,
30
+ IStaking
31
+ {
32
+ string public constant CONTRACT_NAME = "Staking";
33
+ uint8 private constant GIF_MAJOR_VERSION = 3;
34
+
35
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
36
+ bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
37
+
38
+ struct StakingStorage {
39
+ IRegistryService _registryService;
40
+ TokenRegistry _tokenRegistry;
41
+ TokenHandler _tokenHandler;
42
+ StakingStore _store;
43
+ StakingReader _reader;
44
+ NftId _protocolNftId;
45
+ }
46
+
47
+
48
+ modifier onlyStake(NftId stakeNftId) {
49
+ if (!_getStakingStorage()._store.exists(stakeNftId)) {
50
+ revert ErrorStakingNotStake(stakeNftId);
51
+ }
52
+ _;
53
+ }
54
+
55
+
56
+ modifier onlyTarget(NftId targetNftId) {
57
+ if (!_getStakingStorage()._store.getTargetNftIdSet().exists(targetNftId)) {
58
+ revert ErrorStakingNotTarget(targetNftId);
59
+ }
60
+ _;
61
+ }
62
+
63
+ // set/update staking reader
64
+ function setStakingReader(StakingReader stakingReader)
65
+ external
66
+ virtual
67
+ onlyOwner()
68
+ {
69
+ if(stakingReader.getStaking() != IStaking(this)) {
70
+ revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
71
+ }
72
+
73
+ _getStakingStorage()._reader = stakingReader;
74
+ }
75
+
76
+
77
+ // rate management
78
+ function setStakingRate(uint256 chainId, address token, UFixed stakingRate)
79
+ external
80
+ virtual
81
+ onlyOwner()
82
+ {
83
+ StakingStorage storage $ = _getStakingStorage();
84
+
85
+ if (!$._tokenRegistry.isRegistered(chainId, token)) {
86
+ revert ErrorStakingTokenNotRegistered(chainId, token);
87
+ }
88
+
89
+ UFixed oldStakingRate = $._store.getStakingRate(chainId, token);
90
+ $._store.setStakingRate(chainId, token, stakingRate);
91
+
92
+ emit LogStakingStakingRateSet(chainId, token, oldStakingRate, stakingRate);
93
+ }
94
+
95
+ // target management
96
+
97
+ function registerTarget(
98
+ NftId targetNftId,
99
+ ObjectType expectedObjectType,
100
+ uint256 chainId,
101
+ Seconds initialLockingPeriod,
102
+ UFixed initialRewardRate
103
+ )
104
+ external
105
+ virtual
106
+ restricted()
107
+ {
108
+ TargetManagerLib.checkTargetParameters(
109
+ getRegistry(),
110
+ _getStakingStorage()._reader,
111
+ targetNftId,
112
+ expectedObjectType,
113
+ initialLockingPeriod,
114
+ initialRewardRate);
115
+
116
+ _getStakingStorage()._store.createTarget(
117
+ targetNftId,
118
+ TargetInfo({
119
+ objectType: expectedObjectType,
120
+ chainId: chainId,
121
+ lockingPeriod: initialLockingPeriod,
122
+ rewardRate: initialRewardRate}));
123
+ }
124
+
125
+
126
+ function setLockingPeriod(
127
+ NftId targetNftId,
128
+ Seconds lockingPeriod
129
+ )
130
+ external
131
+ virtual
132
+ restricted()
133
+ onlyTarget(targetNftId)
134
+ {
135
+ (
136
+ Seconds oldLockingPeriod,
137
+ TargetInfo memory targetInfo
138
+ ) = TargetManagerLib.updateLockingPeriod(
139
+ this,
140
+ targetNftId,
141
+ lockingPeriod);
142
+
143
+ _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
144
+
145
+ emit LogStakingLockingPeriodSet(targetNftId, oldLockingPeriod, lockingPeriod);
146
+ }
147
+
148
+ // TODO add function to set protocol reward rate: onlyOwner
149
+ // get protocol nft id (from where)
150
+
151
+ function setRewardRate(NftId targetNftId, UFixed rewardRate)
152
+ external
153
+ virtual
154
+ restricted()
155
+ onlyTarget(targetNftId)
156
+ {
157
+ (
158
+ UFixed oldRewardRate,
159
+ TargetInfo memory targetInfo
160
+ ) = TargetManagerLib.updateRewardRate(
161
+ this,
162
+ targetNftId,
163
+ rewardRate);
164
+
165
+ _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
166
+
167
+ emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
168
+ }
169
+
170
+
171
+ function refillRewardReserves(NftId targetNftId, Amount dipAmount)
172
+ external
173
+ virtual
174
+ restricted()
175
+ returns (Amount newBalance)
176
+ {
177
+ // update book keeping of reward reserves
178
+ StakingStorage storage $ = _getStakingStorage();
179
+ newBalance = $._store.increaseReserves(targetNftId, dipAmount);
180
+ }
181
+
182
+
183
+ function withdrawRewardReserves(NftId targetNftId, Amount dipAmount)
184
+ external
185
+ virtual
186
+ restricted()
187
+ returns (Amount newBalance)
188
+ {
189
+ // update book keeping of reward reserves
190
+ StakingStorage storage $ = _getStakingStorage();
191
+ newBalance = $._store.decreaseReserves(targetNftId, dipAmount);
192
+ }
193
+
194
+
195
+ function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
196
+ external
197
+ virtual
198
+ restricted() // only pool service
199
+ returns (Amount newBalance)
200
+ {
201
+ StakingStorage storage $ = _getStakingStorage();
202
+ uint chainId = $._reader.getTargetInfo(targetNftId).chainId;
203
+ UFixed stakingRate = $._reader.getStakingRate(chainId, token);
204
+ newBalance = $._store.increaseTotalValueLocked(targetNftId, stakingRate, token, amount);
205
+ }
206
+
207
+
208
+ function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
209
+ external
210
+ virtual
211
+ restricted() // only pool service
212
+ returns (Amount newBalance)
213
+ {
214
+ StakingStorage storage $ = _getStakingStorage();
215
+ uint chainId = $._reader.getTargetInfo(targetNftId).chainId;
216
+ UFixed stakingRate = $._reader.getStakingRate(chainId, token);
217
+ newBalance = $._store.decreaseTotalValueLocked(targetNftId, stakingRate, token, amount);
218
+ }
219
+
220
+
221
+ function registerRemoteTarget(NftId targetNftId, TargetInfo memory targetInfo)
222
+ external
223
+ virtual
224
+ restricted()
225
+ onlyOwner // or CCIP
226
+ {
227
+
228
+ }
229
+
230
+ function updateRemoteTvl(NftId targetNftId, address token, Amount amount)
231
+ external
232
+ virtual
233
+ restricted()
234
+ onlyOwner // or CCIP
235
+ {
236
+
237
+ }
238
+
239
+ //--- staking functions -------------------------------------------------//
240
+
241
+ function createStake(
242
+ NftId stakeNftId,
243
+ NftId targetNftId,
244
+ Amount stakeAmount
245
+ )
246
+ external
247
+ virtual
248
+ restricted() // only staking service
249
+ {
250
+ StakingStorage storage $ = _getStakingStorage();
251
+ Timestamp lockedUntil = StakeManagerLib.checkCreateParameters(
252
+ $._reader,
253
+ targetNftId,
254
+ stakeAmount);
255
+
256
+ // create new stake
257
+ $._store.create(
258
+ stakeNftId,
259
+ StakeInfo({
260
+ lockedUntil: lockedUntil}));
261
+
262
+ // update target stake balance
263
+ $._store.increaseStake(
264
+ stakeNftId,
265
+ targetNftId,
266
+ stakeAmount);
267
+ }
268
+
269
+
270
+ function stake(
271
+ NftId stakeNftId,
272
+ Amount stakeAmount
273
+ )
274
+ external
275
+ virtual
276
+ restricted() // only staking service
277
+ onlyStake(stakeNftId)
278
+ returns (Amount stakeBalance)
279
+ {
280
+ StakingStorage storage $ = _getStakingStorage();
281
+ stakeBalance = StakeManagerLib.stake(
282
+ getRegistry(),
283
+ $._reader,
284
+ $._store,
285
+ stakeNftId,
286
+ stakeAmount);
287
+ }
288
+
289
+
290
+ function restake(
291
+ NftId stakeNftId,
292
+ NftId newTargetNftId
293
+ )
294
+ external
295
+ virtual
296
+ restricted() // only staking service
297
+ onlyStake(stakeNftId)
298
+ returns (NftId newStakeNftId)
299
+ {
300
+ // TODO add check that allows additional staking amount
301
+ StakingStorage storage $ = _getStakingStorage();
302
+
303
+ // TODO implement
304
+ }
305
+
306
+
307
+ function updateRewards(NftId stakeNftId)
308
+ external
309
+ virtual
310
+ restricted() // only staking service
311
+ onlyStake(stakeNftId)
312
+ {
313
+ StakingStorage storage $ = _getStakingStorage();
314
+ _updateRewards($._reader, $._store, stakeNftId);
315
+ }
316
+
317
+
318
+ function claimRewards(NftId stakeNftId)
319
+ external
320
+ virtual
321
+ restricted() // only staking service
322
+ onlyStake(stakeNftId)
323
+ returns (
324
+ Amount rewardsClaimedAmount
325
+ )
326
+ {
327
+ StakingStorage storage $ = _getStakingStorage();
328
+
329
+ // update rewards since last update
330
+ NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
331
+
332
+ // unstake all available rewards
333
+ rewardsClaimedAmount = $._store.claimUpTo(
334
+ stakeNftId,
335
+ targetNftId,
336
+ AmountLib.max());
337
+
338
+ // update reward reserves
339
+ $._store.decreaseReserves(targetNftId, rewardsClaimedAmount);
340
+ }
341
+
342
+
343
+ function unstake(NftId stakeNftId)
344
+ external
345
+ virtual
346
+ restricted() // only staking service
347
+ onlyStake(stakeNftId)
348
+ returns (
349
+ Amount unstakedAmount,
350
+ Amount rewardsClaimedAmount
351
+ )
352
+ {
353
+ StakingStorage storage $ = _getStakingStorage();
354
+
355
+ StakeManagerLib.checkUnstakeParameters($._reader, stakeNftId);
356
+
357
+ // update rewards since last update
358
+ NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
359
+
360
+ // unstake all available dips
361
+ (
362
+ unstakedAmount,
363
+ rewardsClaimedAmount
364
+ ) = $._store.unstakeUpTo(
365
+ stakeNftId,
366
+ targetNftId,
367
+ AmountLib.max(), // unstake all stakes
368
+ AmountLib.max()); // claim all rewards
369
+
370
+ // update reward reserves
371
+ $._store.decreaseReserves(targetNftId, rewardsClaimedAmount);
372
+ }
373
+
374
+
375
+
376
+ //--- other functions ---------------------------------------------------//
377
+
378
+ function collectDipAmount(address from, Amount dipAmount)
379
+ external
380
+ restricted() // only staking service
381
+ {
382
+ getTokenHandler().collectTokens(from, getWallet(), dipAmount);
383
+ }
384
+
385
+
386
+ function transferDipAmount(address to, Amount dipAmount)
387
+ external
388
+ restricted() // only staking service
389
+ {
390
+ getTokenHandler().distributeTokens(getWallet(), to, dipAmount);
391
+ }
392
+
393
+
394
+ //--- view functions ----------------------------------------------------//
395
+
396
+ function getStakingReader() public view returns (StakingReader reader) {
397
+ return _getStakingStorage()._reader;
398
+ }
399
+
400
+ function getStakingStore() external view returns (StakingStore stakingStore) {
401
+ return _getStakingStorage()._store;
402
+ }
403
+
404
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
405
+ return address(_getStakingStorage()._tokenRegistry);
406
+ }
407
+
408
+ function getTokenHandler() public virtual override(Component, IComponent) view returns (TokenHandler tokenHandler) {
409
+ return _getStakingStorage()._tokenHandler;
410
+ }
411
+
412
+ // from Versionable
413
+ function getVersion()
414
+ public
415
+ pure
416
+ virtual override (IVersionable, Versionable)
417
+ returns(Version)
418
+ {
419
+ return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
420
+ }
421
+
422
+ //--- internal functions ------------------------------------------------//
423
+
424
+ function _updateRewards(
425
+ StakingReader reader,
426
+ StakingStore store,
427
+ NftId stakeNftId
428
+ )
429
+ internal
430
+ virtual
431
+ returns (NftId targetNftId)
432
+ {
433
+ UFixed rewardRate;
434
+
435
+ (targetNftId, rewardRate) = reader.getTargetRewardRate(stakeNftId);
436
+ (Amount rewardIncrement, ) = StakeManagerLib.calculateRewardIncrease(
437
+ reader,
438
+ stakeNftId,
439
+ rewardRate);
440
+
441
+ store.updateRewards(
442
+ stakeNftId,
443
+ targetNftId,
444
+ rewardIncrement);
445
+ }
446
+
447
+
448
+ function _initialize(
449
+ address owner,
450
+ bytes memory data
451
+ )
452
+ internal
453
+ virtual override
454
+ initializer
455
+ {
456
+ (
457
+ address registryAddress,
458
+ address tokenRegistryAddress,
459
+ address stakingStoreAddress,
460
+ address stakingOwner
461
+ ) = abi.decode(data, (address, address, address, address));
462
+
463
+ // only admin(authority) and dip token address are set in registry at this point
464
+ IRegistry registry = IRegistry(registryAddress);
465
+ address authority = registry.getAuthority();
466
+ TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
467
+ address dipTokenAddress = tokenRegistry.getDipTokenAddress();
468
+
469
+ _initializeComponent(
470
+ authority,
471
+ registryAddress,
472
+ registry.getNftId(),
473
+ CONTRACT_NAME,
474
+ dipTokenAddress,
475
+ STAKING(),
476
+ false, // is interceptor
477
+ stakingOwner,
478
+ "", // registry data
479
+ ""); // component data
480
+
481
+ // wiring to external contracts
482
+ StakingStorage storage $ = _getStakingStorage();
483
+ $._protocolNftId = getRegistry().getProtocolNftId();
484
+ $._store = StakingStore(stakingStoreAddress);
485
+ $._reader = StakingStore(stakingStoreAddress).getStakingReader();
486
+ $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
487
+ $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(dipTokenAddress, authority);
488
+
489
+ _registerInterface(type(IStaking).interfaceId);
490
+ }
491
+
492
+
493
+ function _getStakingStorage() private pure returns (StakingStorage storage $) {
494
+ assembly {
495
+ $.slot := STAKING_LOCATION_V1
496
+ }
497
+ }
498
+ }
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {TARGET, COMPONENT, STAKE} from "../type/ObjectType.sol";
5
+ import {INITIAL} from "../type/StateId.sol";
6
+ import {Lifecycle} from "../shared/Lifecycle.sol";
7
+
8
+ contract StakingLifecycle is
9
+ Lifecycle
10
+ {
11
+ constructor() {
12
+ _setupLifecycle();
13
+ }
14
+
15
+ function _setupLifecycle()
16
+ internal
17
+ override
18
+ {
19
+ setInitialState(TARGET(), INITIAL());
20
+ setInitialState(COMPONENT(), INITIAL());
21
+ setInitialState(STAKE(), INITIAL());
22
+ }
23
+ }
@@ -0,0 +1,50 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {Staking} from "./Staking.sol";
7
+
8
+
9
+ contract StakingManager is
10
+ ProxyManager
11
+ {
12
+ Staking private _staking;
13
+ address private _initialImplementation;
14
+ bytes private _initializationData;
15
+
16
+ /// @dev initializes proxy manager with service implementation
17
+ constructor(
18
+ address registry,
19
+ address tokenRegistry,
20
+ address stakingStore,
21
+ address initialOwner
22
+ )
23
+ ProxyManager(registry)
24
+ {
25
+ Staking stakingImplementation = new Staking();
26
+
27
+ _initialImplementation = address(stakingImplementation);
28
+ _initializationData = abi.encode(
29
+ registry,
30
+ tokenRegistry,
31
+ stakingStore,
32
+ initialOwner);
33
+
34
+ IVersionable versionable = deploy(
35
+ _initialImplementation,
36
+ _initializationData);
37
+
38
+ _staking = Staking(address(versionable));
39
+ }
40
+
41
+ //--- view functions ----------------------------------------------------//
42
+
43
+ function getStaking()
44
+ external
45
+ view
46
+ returns (Staking)
47
+ {
48
+ return _staking;
49
+ }
50
+ }