@etherisc/gif-next 0.0.2-d60aa51-726 → 0.0.2-d62f29e-108

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 (682) hide show
  1. package/README.md +59 -18
  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/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +499 -549
  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 +1489 -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/distribution/Distribution.sol/Distribution.json +1159 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1512 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +838 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +906 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +932 -0
  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 +274 -1320
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +444 -172
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +364 -3003
  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 +846 -413
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +587 -397
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +349 -127
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3607 -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 -49
  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 +30 -112
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1126 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → oracle/IOracleComponent.sol/IOracleComponent.json} +403 -366
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1018 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1395 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1474 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +907 -0
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +909 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1208 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1181 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1591 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +746 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +852 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1243 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1437 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +826 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +241 -190
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +886 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IPolicyService.sol/IPolicyService.json} +406 -371
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IPricingService.sol/IPricingService.json} +290 -187
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +948 -0
  134. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  135. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IRiskService.sol/IRiskService.json} +144 -112
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1234 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +770 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +972 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +766 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1201 -0
  146. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  147. package/artifacts/contracts/product/RiskService.sol/RiskService.json +695 -0
  148. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +378 -113
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +290 -297
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +612 -190
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +477 -318
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +337 -133
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +832 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1680 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +804 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +208 -209
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +276 -124
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +60 -34
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.json +97 -172
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +940 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +88 -20
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +201 -162
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  226. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  230. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  232. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  234. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  235. package/artifacts/contracts/staking/Staking.sol/Staking.json +1975 -0
  236. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  238. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +765 -0
  240. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  242. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  244. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  246. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  248. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  250. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  252. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  254. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  256. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  258. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  260. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  262. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  264. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  266. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  268. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  270. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  272. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  274. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  276. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  278. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  280. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  286. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  288. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  292. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  294. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  296. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  300. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  302. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  304. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  306. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  307. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  308. package/contracts/authorization/AccessAdmin.sol +591 -0
  309. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  310. package/contracts/authorization/Authorization.sol +217 -0
  311. package/contracts/authorization/IAccess.sol +48 -0
  312. package/contracts/authorization/IAccessAdmin.sol +136 -0
  313. package/contracts/authorization/IAuthorization.sol +54 -0
  314. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  315. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  316. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  317. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  318. package/contracts/distribution/BasicDistribution.sol +138 -0
  319. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  320. package/contracts/distribution/Distribution.sol +295 -0
  321. package/contracts/distribution/DistributionService.sol +336 -0
  322. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  323. package/contracts/distribution/IDistributionComponent.sol +52 -0
  324. package/contracts/distribution/IDistributionService.sol +101 -0
  325. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +40 -43
  326. package/contracts/instance/IInstance.sol +56 -49
  327. package/contracts/instance/IInstanceService.sol +78 -18
  328. package/contracts/instance/Instance.sol +157 -381
  329. package/contracts/instance/InstanceAdmin.sol +285 -0
  330. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  331. package/contracts/instance/InstanceReader.sol +202 -87
  332. package/contracts/instance/InstanceService.sol +410 -176
  333. package/contracts/instance/InstanceServiceManager.sol +13 -30
  334. package/contracts/instance/InstanceStore.sol +287 -0
  335. package/contracts/instance/base/BalanceStore.sol +123 -0
  336. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  337. package/contracts/instance/base/ObjectCounter.sol +21 -0
  338. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  339. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +21 -37
  340. package/contracts/instance/module/IAccess.sol +29 -21
  341. package/contracts/instance/module/IBundle.sol +8 -8
  342. package/contracts/instance/module/IComponents.sol +46 -0
  343. package/contracts/instance/module/IDistribution.sol +6 -4
  344. package/contracts/instance/module/IPolicy.sol +59 -19
  345. package/contracts/instance/module/IRisk.sol +1 -1
  346. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  347. package/contracts/oracle/BasicOracle.sol +48 -0
  348. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  349. package/contracts/oracle/IOracle.sol +36 -0
  350. package/contracts/oracle/IOracleComponent.sol +33 -0
  351. package/contracts/oracle/IOracleService.sol +65 -0
  352. package/contracts/oracle/Oracle.sol +167 -0
  353. package/contracts/oracle/OracleService.sol +279 -0
  354. package/contracts/oracle/OracleServiceManager.sol +39 -0
  355. package/contracts/pool/BasicPool.sol +166 -0
  356. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  357. package/contracts/pool/BundleService.sol +438 -0
  358. package/contracts/pool/BundleServiceManager.sol +39 -0
  359. package/contracts/pool/IBundleService.sol +134 -0
  360. package/contracts/pool/IPoolComponent.sol +58 -0
  361. package/contracts/pool/IPoolService.sol +160 -0
  362. package/contracts/pool/Pool.sol +326 -0
  363. package/contracts/pool/PoolService.sol +509 -0
  364. package/contracts/pool/PoolServiceManager.sol +39 -0
  365. package/contracts/product/ApplicationService.sol +249 -0
  366. package/contracts/product/ApplicationServiceManager.sol +38 -0
  367. package/contracts/product/BasicProduct.sol +53 -0
  368. package/contracts/product/BasicProductAuthorization.sol +43 -0
  369. package/contracts/product/ClaimService.sol +487 -0
  370. package/contracts/product/ClaimServiceManager.sol +38 -0
  371. package/contracts/product/IApplicationService.sol +63 -0
  372. package/contracts/product/IClaimService.sol +122 -0
  373. package/contracts/product/IPolicyService.sol +73 -0
  374. package/contracts/product/IPricingService.sol +39 -0
  375. package/contracts/product/IProductComponent.sol +39 -0
  376. package/contracts/product/IRiskService.sol +33 -0
  377. package/contracts/product/PolicyService.sol +574 -0
  378. package/contracts/product/PolicyServiceManager.sol +39 -0
  379. package/contracts/product/PricingService.sol +301 -0
  380. package/contracts/product/PricingServiceManager.sol +39 -0
  381. package/contracts/product/Product.sol +425 -0
  382. package/contracts/product/RiskService.sol +97 -0
  383. package/contracts/product/RiskServiceManager.sol +39 -0
  384. package/contracts/registry/ChainNft.sol +15 -0
  385. package/contracts/registry/IRegistry.sol +86 -33
  386. package/contracts/registry/IRegistryService.sol +47 -28
  387. package/contracts/registry/ITransferInterceptor.sol +1 -0
  388. package/contracts/registry/Registry.sol +376 -248
  389. package/contracts/registry/RegistryAdmin.sol +374 -0
  390. package/contracts/registry/RegistryService.sol +111 -217
  391. package/contracts/registry/RegistryServiceManager.sol +26 -53
  392. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  393. package/contracts/registry/ReleaseRegistry.sol +485 -0
  394. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  395. package/contracts/registry/TokenRegistry.sol +261 -57
  396. package/contracts/shared/Component.sol +268 -0
  397. package/contracts/shared/ComponentService.sol +641 -0
  398. package/contracts/shared/ComponentServiceManager.sol +35 -0
  399. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  400. package/contracts/shared/IComponent.sol +70 -0
  401. package/contracts/shared/IComponentService.sol +108 -0
  402. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  403. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  404. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  405. package/contracts/shared/INftOwnable.sol +13 -12
  406. package/contracts/shared/IPolicyHolder.sol +45 -0
  407. package/contracts/shared/IRegisterable.sol +4 -6
  408. package/contracts/shared/IRegistryLinked.sol +11 -0
  409. package/contracts/shared/IService.sol +16 -6
  410. package/contracts/shared/InitializableCustom.sol +177 -0
  411. package/contracts/shared/InitializableERC165.sol +27 -0
  412. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  413. package/contracts/shared/KeyValueStore.sol +131 -0
  414. package/contracts/shared/Lifecycle.sol +77 -0
  415. package/contracts/shared/NftIdSet.sol +65 -0
  416. package/contracts/shared/NftOwnable.sol +59 -86
  417. package/contracts/shared/PolicyHolder.sol +99 -0
  418. package/contracts/shared/Registerable.sol +26 -41
  419. package/contracts/shared/RegistryLinked.sol +43 -0
  420. package/contracts/shared/Service.sol +58 -31
  421. package/contracts/shared/TokenHandler.sol +122 -10
  422. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  423. package/contracts/staking/IStaking.sol +168 -0
  424. package/contracts/staking/IStakingService.sol +160 -0
  425. package/contracts/staking/StakeManagerLib.sol +224 -0
  426. package/contracts/staking/Staking.sol +498 -0
  427. package/contracts/staking/StakingLifecycle.sol +23 -0
  428. package/contracts/staking/StakingManager.sol +50 -0
  429. package/contracts/staking/StakingReader.sol +183 -0
  430. package/contracts/staking/StakingService.sol +407 -0
  431. package/contracts/staking/StakingServiceManager.sol +44 -0
  432. package/contracts/staking/StakingStore.sol +605 -0
  433. package/contracts/staking/TargetManagerLib.sol +211 -0
  434. package/contracts/{types → type}/AddressSet.sol +1 -1
  435. package/contracts/type/Amount.sol +135 -0
  436. package/contracts/{types → type}/Blocknumber.sol +27 -3
  437. package/contracts/type/ClaimId.sol +75 -0
  438. package/contracts/{types → type}/DistributorType.sol +2 -2
  439. package/contracts/{types → type}/Fee.sol +33 -23
  440. package/contracts/{types → type}/NftId.sol +21 -15
  441. package/contracts/{types → type}/NftIdSet.sol +2 -2
  442. package/contracts/type/ObjectType.sol +275 -0
  443. package/contracts/type/PayoutId.sol +82 -0
  444. package/contracts/{types → type}/Referral.sol +6 -1
  445. package/contracts/type/RequestId.sol +75 -0
  446. package/contracts/{types → type}/RiskId.sol +1 -1
  447. package/contracts/type/RoleId.sol +174 -0
  448. package/contracts/type/Seconds.sol +101 -0
  449. package/contracts/type/Selector.sol +102 -0
  450. package/contracts/{types → type}/StateId.sol +35 -4
  451. package/contracts/type/String.sol +53 -0
  452. package/contracts/{types → type}/Timestamp.sol +34 -15
  453. package/contracts/{types → type}/UFixed.sol +35 -9
  454. package/contracts/{types → type}/Version.sol +5 -2
  455. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  456. package/contracts/upgradeability/ProxyManager.sol +198 -0
  457. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  458. package/contracts/upgradeability/Versionable.sol +59 -0
  459. package/package.json +10 -7
  460. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  462. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  463. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  464. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  465. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  466. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  467. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  468. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  469. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  470. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  471. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  472. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  473. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  474. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  476. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  478. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  480. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  482. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  484. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  486. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  488. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  490. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  492. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  494. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  497. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  499. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  501. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  503. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  504. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  506. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  508. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  510. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  512. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  513. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  514. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  515. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -775
  516. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  517. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  518. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  519. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  520. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -940
  521. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  522. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  523. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  524. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -272
  525. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  528. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  529. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  530. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  531. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  532. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  533. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  534. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  535. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  538. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  540. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  542. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  546. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1049
  548. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -464
  550. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  551. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1147
  552. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  553. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -488
  554. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  555. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  556. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  558. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  559. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  560. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  561. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  562. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  563. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  564. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  565. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  566. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  567. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  568. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  570. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  572. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  573. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  574. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  575. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  576. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  577. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  578. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  579. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  580. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  581. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  582. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  583. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  584. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  585. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  586. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  588. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  590. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  591. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  592. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  594. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  595. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  596. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  598. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  599. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  600. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  602. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  604. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  606. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  608. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  610. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  612. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  613. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  615. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  616. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  617. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  618. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  619. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  621. package/contracts/components/BaseComponent.sol +0 -132
  622. package/contracts/components/Distribution.sol +0 -163
  623. package/contracts/components/IBaseComponent.sol +0 -31
  624. package/contracts/components/IDistributionComponent.sol +0 -44
  625. package/contracts/components/IPoolComponent.sol +0 -66
  626. package/contracts/components/IProductComponent.sol +0 -35
  627. package/contracts/components/Pool.sol +0 -267
  628. package/contracts/components/Product.sol +0 -289
  629. package/contracts/experiment/cloning/Cloner.sol +0 -47
  630. package/contracts/experiment/errors/Require.sol +0 -38
  631. package/contracts/experiment/errors/Revert.sol +0 -44
  632. package/contracts/experiment/inheritance/A.sol +0 -53
  633. package/contracts/experiment/inheritance/B.sol +0 -28
  634. package/contracts/experiment/inheritance/C.sol +0 -34
  635. package/contracts/experiment/inheritance/IA.sol +0 -13
  636. package/contracts/experiment/inheritance/IB.sol +0 -10
  637. package/contracts/experiment/inheritance/IC.sol +0 -12
  638. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  639. package/contracts/experiment/statemachine/ISM.sol +0 -25
  640. package/contracts/experiment/statemachine/SM.sol +0 -57
  641. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  642. package/contracts/experiment/types/TypeA.sol +0 -47
  643. package/contracts/experiment/types/TypeB.sol +0 -29
  644. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  645. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  646. package/contracts/instance/IInstanceBase.sol +0 -26
  647. package/contracts/instance/InstanceAccessManager.sol +0 -288
  648. package/contracts/instance/InstanceBase.sol +0 -41
  649. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  650. package/contracts/instance/base/IInstanceBase.sol +0 -23
  651. package/contracts/instance/base/KeyValueStore.sol +0 -172
  652. package/contracts/instance/base/Lifecycle.sol +0 -100
  653. package/contracts/instance/module/ISetup.sol +0 -46
  654. package/contracts/instance/module/ITreasury.sol +0 -23
  655. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  656. package/contracts/instance/service/DistributionService.sol +0 -88
  657. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  658. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  659. package/contracts/instance/service/IDistributionService.sol +0 -12
  660. package/contracts/instance/service/IPoolService.sol +0 -51
  661. package/contracts/instance/service/IProductService.sol +0 -110
  662. package/contracts/instance/service/PoolService.sol +0 -287
  663. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  664. package/contracts/instance/service/ProductService.sol +0 -570
  665. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  666. package/contracts/shared/ContractDeployerLib.sol +0 -72
  667. package/contracts/shared/ERC165.sol +0 -25
  668. package/contracts/shared/ProxyManager.sol +0 -94
  669. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  670. package/contracts/shared/Versionable.sol +0 -147
  671. package/contracts/test/TestFee.sol +0 -25
  672. package/contracts/test/TestRegisterable.sol +0 -18
  673. package/contracts/test/TestRoleId.sol +0 -14
  674. package/contracts/test/TestService.sol +0 -24
  675. package/contracts/test/TestToken.sol +0 -26
  676. package/contracts/test/TestVersion.sol +0 -44
  677. package/contracts/test/TestVersionable.sol +0 -17
  678. package/contracts/types/ChainId.sol +0 -38
  679. package/contracts/types/NumberId.sol +0 -52
  680. package/contracts/types/ObjectType.sol +0 -152
  681. package/contracts/types/RoleId.sol +0 -90
  682. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,224 @@
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, AmountLib} from "../type/Amount.sol";
7
+ import {Component} from "../shared/Component.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IRegistryService} from "../registry/IRegistryService.sol";
10
+ import {IStaking} from "./IStaking.sol";
11
+ import {Key32} from "../type/Key32.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {ObjectType, INSTANCE, PROTOCOL, TARGET} from "../type/ObjectType.sol";
14
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
15
+ import {StakingReader} from "./StakingReader.sol";
16
+ import {StakingStore} from "./StakingStore.sol";
17
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
18
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
+
20
+
21
+ library StakeManagerLib {
22
+
23
+ function stake(
24
+ IRegistry registry,
25
+ StakingReader stakingReader,
26
+ StakingStore stakingStore,
27
+ NftId stakeNftId,
28
+ Amount stakeAmount
29
+ )
30
+ external
31
+ returns (Amount stakeBalance)
32
+ {
33
+ // check that target is active for staking
34
+ (
35
+ UFixed rewardRate,
36
+ Seconds lockingPeriod
37
+ ) = checkStakeParameters(
38
+ stakingReader,
39
+ stakeNftId);
40
+
41
+ // calculate new rewards (if any)
42
+ (
43
+ Amount rewardIncrementAmount,
44
+ Amount currentTotalDipAmount
45
+ ) = calculateRewardIncrease(
46
+ stakingReader,
47
+ stakeNftId,
48
+ rewardRate);
49
+
50
+ stakeBalance = currentTotalDipAmount + stakeAmount;
51
+
52
+ // TODO check that additional dip, rewards and rewards increment
53
+ // are still ok with max target staking amount
54
+ NftId targetNftId = registry.getObjectInfo(stakeNftId).parentNftId;
55
+
56
+ stakingStore.restakeRewards(
57
+ stakeNftId,
58
+ targetNftId,
59
+ rewardIncrementAmount);
60
+
61
+ stakingStore.increaseStake(
62
+ stakeNftId,
63
+ targetNftId,
64
+ stakeAmount);
65
+
66
+ // update locked until with target locking period
67
+ stakingStore.update(
68
+ stakeNftId,
69
+ IStaking.StakeInfo({
70
+ lockedUntil: TimestampLib.blockTimestamp().addSeconds(
71
+ lockingPeriod)}));
72
+
73
+ }
74
+
75
+ function checkCreateParameters(
76
+ StakingReader stakingReader,
77
+ NftId targetNftId,
78
+ Amount dipAmount
79
+ )
80
+ external
81
+ view
82
+ returns (
83
+ Timestamp lockedUntil
84
+ )
85
+ {
86
+ Seconds lockingPeriod = checkTarget(stakingReader, targetNftId);
87
+ checkDipAmount(stakingReader, targetNftId, dipAmount);
88
+
89
+ Timestamp currentTime = TimestampLib.blockTimestamp();
90
+ lockedUntil = currentTime.addSeconds(lockingPeriod);
91
+ }
92
+
93
+
94
+ function checkStakeParameters(
95
+ StakingReader stakingReader,
96
+ NftId stakeNftId
97
+ )
98
+ public
99
+ view
100
+ returns (
101
+ UFixed rewardRate,
102
+ Seconds lockingPeriod
103
+ )
104
+ {
105
+ NftId targetNftId = stakingReader.getTargetNftId(stakeNftId);
106
+
107
+ // only accept stakes for active targets
108
+ if (!stakingReader.isActive(targetNftId)) {
109
+ revert IStaking.ErrorStakingTargetNotActive(targetNftId);
110
+ }
111
+
112
+ IStaking.TargetInfo memory info = stakingReader.getTargetInfo(targetNftId);
113
+ rewardRate = info.rewardRate;
114
+ lockingPeriod = info.lockingPeriod;
115
+ }
116
+
117
+ function checkUnstakeParameters(
118
+ StakingReader stakingReader,
119
+ NftId stakeNftId
120
+ )
121
+ public
122
+ view
123
+ returns (
124
+ UFixed rewardRate,
125
+ Seconds lockingPeriod
126
+ )
127
+ {
128
+ IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
129
+
130
+ if (stakeInfo.lockedUntil > TimestampLib.blockTimestamp()) {
131
+ revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
132
+ }
133
+ }
134
+
135
+
136
+ function checkTarget(
137
+ StakingReader stakingReader,
138
+ NftId targetNftId
139
+ )
140
+ public
141
+ view
142
+ returns (Seconds lockingPeriod)
143
+ {
144
+ // target nft id must be registered
145
+ if (!stakingReader.isTarget(targetNftId)) {
146
+ revert IStaking.ErrorStakingNotTarget(targetNftId);
147
+ }
148
+
149
+ // only accept stakes for active targets
150
+ if (!stakingReader.isActive(targetNftId)) {
151
+ revert IStaking.ErrorStakingTargetNotActive(targetNftId);
152
+ }
153
+
154
+ lockingPeriod = stakingReader.getTargetInfo(targetNftId).lockingPeriod;
155
+ }
156
+
157
+
158
+ function checkDipAmount(
159
+ StakingReader stakingReader,
160
+ NftId targetNftId,
161
+ Amount dipAmount
162
+ )
163
+ public
164
+ pure
165
+ {
166
+ // check stake amount > 0
167
+ if (dipAmount.eqz()) {
168
+ revert IStaking.ErrorStakingStakeAmountZero(targetNftId);
169
+ }
170
+
171
+ // TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
172
+ }
173
+
174
+ function calculateRewardIncrease(
175
+ StakingReader stakingReader,
176
+ NftId stakeNftId,
177
+ UFixed rewardRate
178
+ )
179
+ public
180
+ view
181
+ returns (
182
+ Amount rewardIncreaseAmount,
183
+ Amount totalDipAmount
184
+ )
185
+ {
186
+ (
187
+ Amount stakeAmount,
188
+ Amount rewardAmount,
189
+ Timestamp lastUpdatedAt
190
+ ) = stakingReader.getStakeBalances(stakeNftId);
191
+
192
+ Seconds duration = SecondsLib.toSeconds(
193
+ block.timestamp - lastUpdatedAt.toInt());
194
+
195
+ rewardIncreaseAmount = calculateRewardAmount(
196
+ rewardRate,
197
+ duration,
198
+ stakeAmount);
199
+
200
+ totalDipAmount = stakeAmount + rewardAmount + rewardIncreaseAmount;
201
+ }
202
+
203
+
204
+ function calculateRewardAmount(
205
+ UFixed rewardRate,
206
+ Seconds duration,
207
+ Amount stakeAmount
208
+ )
209
+ public
210
+ pure
211
+ returns(
212
+ Amount rewardAmount
213
+ )
214
+ {
215
+ UFixed rewardRateFraction = getYearFraction(duration) * rewardRate;
216
+ rewardAmount = stakeAmount.multiplyWith(rewardRateFraction);
217
+ }
218
+
219
+
220
+ function getYearFraction(Seconds duration) public pure returns (UFixed yearFraction) {
221
+ return UFixedLib.toUFixed(duration.toInt()) / UFixedLib.toUFixed(SecondsLib.oneYear().toInt());
222
+ }
223
+
224
+ }
@@ -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
+ }